比如我想 git 跟踪目录内所有文件,在修改多个文件后只需要 git commit 一次就行了。
现在每次 git commit 前都要用 git add 添加下文件,太烦了吧。还要先 git status 查看下修改了哪些文件,又添加了几个文件。
又比如自动跟踪已 git add 过的文件,防止修改文件名后忘了 push 那个文件。
我刚开始学 git 遇到的问题有点多。
目前还不知道怎么查看仓库内的文件,百度找了半天没找到我要得。
1
dacapoday 2019-01-21 12:46:11 +08:00 via iPhone
那就先用图形客户端呗,至少能熟悉功能。然后再看图形客户端的命令日志。
|
2
wuyuanwei 2019-01-21 14:03:11 +08:00
|
3
frylkrttj OP @wuyuanwei “ git commit --all ”只能提交已“ git add ”过的文件呢。这样我目录内新添加的文件和修改文件名后的文件咋办呢。
|
6
besto 2019-01-21 15:08:24 +08:00
首先 git add 是可以 add 目录的
其次 git add 之后 你可以再更改, 这个时候提交只会提交你 add 那个点的版本. 你这个需求明显不合理啊 |
7
rocksolid 2019-01-21 15:22:26 +08:00
git add .
不就行了么 有什么麻烦的 |
8
rocksolid 2019-01-21 15:23:06 +08:00
或者直接用 vscode
|
9
ddddad 2019-01-21 15:32:17 +08:00 3
lz 还没踩过提交错误的坑
|
10
hjq98765 2019-01-21 15:36:57 +08:00
我的感觉是,git 设置成这么个流程是有其中的深意的
|
11
frye 2019-01-21 15:39:00 +08:00 1
git add .
|
12
frylkrttj OP 看前面这么多回复差点又以为是自己笨了,幸好等来了 #11 @frye 的回复,才发现自己也没那么笨嘛,@frye 是真知道我在想什么啊。
|
13
frylkrttj OP 现在好像只剩下,怎么实现自动跟踪文件名的问题了。
|
14
quinoa42 2019-01-21 15:53:14 +08:00
Untracked, stated 和 commited 是三种不同的状态,这么做自然有它的理由
不过关于楼主的问题,不少 IDE 是支持自动 track 的,比如 Intellij 但是我觉得这“智能”功能很烦,所以我一般都是关闭 IDE 的 git 相关功能的 |
15
passerbytiny 2019-01-21 16:25:01 +08:00
@frylkrttj #13 文件名修改无解,必须 IDE 解决,纯命令行是 git rename,相当不方便,还容易漏(你要不用这命令,那文件改名后是 remove 和 add )。
|
16
hash 2019-01-21 17:07:26 +08:00
按照楼主的描述似乎只需要写一个 alias?
|
17
wuyuanwei 2019-01-21 18:01:04 +08:00
@frylkrttj `git add .` 之前最好还是 `git status` 检查下状态,避免不必要的提交错误。通常我会配合 Facebook PathPicker 手动选择待暂存的文件。
|
18
V2exUser 2019-01-21 18:04:20 +08:00 via Android
idea 倒是会自动弹出是否自动加入 git 的窗口
|
19
ww23xx 2019-01-21 19:10:26 +08:00 via Android
(小姊姊我面向 V2EX 编程)
|
20
chinvo 2019-01-21 19:12:21 +08:00
不是,这些简单问题,你 Google 一下好么
再不济去微信上问那些大叔大爷啊 [:doge:] |
21
chinvo 2019-01-21 19:13:13 +08:00
|
22
shuizhengqi 2019-01-21 19:20:42 +08:00 1
一看就是年轻人,没写过大项目
|
23
stephen9357 2019-01-21 19:23:43 +08:00
无脑 git add .早晚出事,我还是习惯 git status,然后挨个 git add,起码心里有数。
|
24
hgjhgjgjhgjg 2019-01-21 19:24:51 +08:00 1
alias grb="git rebase"
alias gaa="git add -A" alias gs="git status" alias gm="git commit" gaa gmm -m "xxx" 楼主可以自定义一个 gam 试试看。 |
25
des 2019-01-21 19:25:57 +08:00 via Android
不是 command + k,然后选自己要提交的文件和变化么?
|
26
frankkai 2019-01-21 19:47:29 +08:00
git ac
|
27
tomoya92 2019-01-21 20:01:03 +08:00 via iPhone
我更想知道 git 提交怎么不用输入后面的-m
每次提交都要写一下-m "update" |
28
imherer 2019-01-21 20:08:40 +08:00
用带图形界面的客户端,比如 SourceTree、Github Desktop 等都可以
但是建议楼主最好别这样做,不出事还好,出事就麻烦了 |
30
ooops 2019-01-21 20:27:53 +08:00
多用用就没有这些问题了。建议从头到尾看看 Pro Git。有问题看到后面就慢慢懂了。我看了半天问题不知道楼主想干啥。
|
31
gesse 2019-01-21 20:35:54 +08:00
你可能对 git 有什么误解
|
35
frylkrttj OP @stephen9357 我刚学 git 需要反复操作 正需要 git add . 编程做项目离我还远。
|
36
frylkrttj OP @hgjhgjgjhgjg #24 你这配置是写在那个文件的,gam 又是什么。
|
37
fan123199 2019-01-21 21:08:13 +08:00
git add folder/* && git commit -m "all file in folder updated" && git push 一条龙, 个人开发没问题。
|
40
frienmo 2019-01-21 23:09:02 +08:00
@hgjhgjgjhgjg 握手
看我的 ##############Git############ #alias git='LANG=en_US git' alias gl='git log' alias gs='git status' alias gfp='git fetch -p' alias gcm='git checkout master' alias gc-='git checkout -' alias gcp='git cherry-pick' alias gau='git add -u' alias gpm='git pull origin master' alias gnb='function _gnb { gcm; gpm ; git checkout -b $1 ;echo $1;}; _gnb' alias amend='git add -u;git commit --amend --no-edit' alias gr='function _gr() { re='^[0-9]+$'; if [[ $1 =~ $re ]] ; then git rebase -i HEAD~$1; else git rebase -i $1; fi;};_gr' alias gz='git reset HEAD~1' alias delete-merged-branches='function _f { git checkout --quiet master && git branch --merged | grep --invert-match '\\*' | xargs -n 1 git branch --delete; git checkout --quiet @{-1}; }; _f' |
41
ynyounuo 2019-01-22 02:55:46 +08:00 via iPhone
如果你的工作流只是
git add . git commit -m "{some_useless_info}" git push 那你基本就是在浪费时间骗自己在用 git 而已 建议 rm -rm .git/ 一劳永逸 |
42
ynyounuo 2019-01-22 02:56:10 +08:00 via iPhone
rf*
|
43
SharkIng 2019-01-22 06:07:48 +08:00
初学者这样用倒是可以,我以前也这么用,但是的确像楼上说的问题很多。当你真正做项目后,或者在公司里用的时候就会明白这样不行的。所以刚开始养好习惯比较好,不要怕麻烦。
|
47
Wolther47 2019-01-22 07:55:45 +08:00 via iPhone
我觉的楼上有几位言过了,一开始用 git,还是先以熟悉为目的,反正也不是非常重要的代码,翻车了才能更好的记住(
|
48
hakono 2019-01-22 08:35:59 +08:00 via Android 1
嘻嘻,等楼主开发程序后,试着多用几次 git add *就会发现,咦,这次把一堆不在 ignore 名单里的临时文件提交了。
下次:卧槽把刚刚创建的带服务器帐号密码的配置文件一并提交 push 到 github 了。 然后楼主开始想着怎么回滚,怎么操作远程仓库,然后学会了 git push --force 然后把推送的坑也踩了一遍 233 |
49
james2013 2019-01-22 08:38:45 +08:00 1
直接用图形化工具 TortoiseGit.
丰富的功能,直接用鼠标点击就可以了. 1 个命令也不需要输入. |
50
dajj 2019-01-22 08:55:20 +08:00
脚本。。。
|
51
des 2019-01-22 08:59:42 +08:00 via Android
|
52
hakono 2019-01-22 09:14:01 +08:00 via Android
@des
主要很无脑 add 的话,多时候都是 add commit push 三件套 然后回过头就才发现远程仓库已经塞入了多余的文件, 这时候操作远程对新手就是个大坑了,然后这时候通过各方百度,很大几率会学会 git rest --hard 和 git push --force 这两个命令。 |
53
ElfenSterben 2019-01-22 09:25:52 +08:00
你把 gitignore 配置好然后 git add . 有什么问题么?
|
54
flyingghost 2019-01-22 09:36:15 +08:00
新手学习过程中看不到风险很正常。提出优化建议起码证明 lz 进一步思考了。
但 git 不这样设计不是因为 git 蠢,而是因为这样设计是错的:误提交实在是太多太多了。。。 亲身经历过同事误把 密钥.java.bak 提交进仓库,打包,发布,被竞争对手反编译,获取到公司通用算法和我部门密钥,暗搓搓上线我司在线服务的破解版,然后全部门在过年前一天飞机火车汽车逆流回司加班的壮丽事件。 日常岁月静好的代码仓库,也时不时会出现不应当提交的文件。所以需要 code review,需要服务端 commit 钩子,需要定期检查清理。 单就文件的尺度来说,git/svn 是允许你整体提交的,也就是说你无需手动一个个变更点看过来,一把梭提交整个文件。是不是和“提交整个目录”很像?所以 git 不是没想到,而是在方便和危险之间找到了平衡:文件粒度。 但我要求的最佳实践,依然是提交的时候检查精确到行,每个变更都确认需要提交。(你看我没有要求精确到字符已经很人性化很方便啦!) |
55
liu19931020 2019-01-22 10:12:17 +08:00
vscode+1
|
56
frylkrttj OP |
57
xxgirl2 2019-01-22 10:31:59 +08:00
先 status,然后 diff,检查文件、格式、修改无误后,再 add。
|
58
omph 2019-01-22 10:37:31 +08:00
自己写个驻留程序 daemon,监控目录中文件变动,自动添加即可。当然最好支持过滤功能
|
59
libook 2019-01-22 10:37:59 +08:00
用 Git 养成好习惯是头等重要的,用时的一点点麻烦,是为了避免解决问题时的恶心。
“自动跟踪”坑很多,比如提交了并不想提交的文件(临时测试修改的代码等),以后用用就知道还是老老实实 diff 再 add 最稳妥,版本控制工具使用来可靠控制代码版本的,不应该是累赘,觉得用起来很麻烦真不如不用。 团队合作使用 git commit -a 和 git push --force 等指令,会被人打死。 |
60
omph 2019-01-22 10:39:41 +08:00
和通知功能
|
61
karllynn 2019-01-22 10:41:34 +08:00
这种简单问题,你读一下 git 文档不就行了么。。。
|
62
xio 2019-01-22 10:48:32 +08:00
```bash
function gitall() { git add . -A if [ -n "$1" ]; then git commit -m "$1" else git commit -m "update" fi git push } alias gacp="gitall" ``` |
63
weixiangzhe 2019-01-22 13:34:08 +08:00
我一般快速提交是这样的
gaa && gc -m 'msg' |
64
gaby2018 2019-01-22 14:43:18 +08:00
楼主应该是 svn 用多了,git 区别还是挺大
|
65
halk 2019-01-22 17:17:23 +08:00
git add -u
|
66
msg7086 2019-01-22 22:31:58 +08:00
顺路说一句,学 Git (项目管理)和学 Git (命令行)是两回事。
你说你学 Git,可以先想想你要学其中的哪一个,还是两个都要。 我还是建议找个好点的 GUI。 |
68
guanhui07 2019-01-23 11:09:58 +08:00
git add .
|
69
kaiser1992 2019-01-23 11:21:42 +08:00
git add -A
|