我发现自己每次提交之前都会使用它。这样对吗?如果是这样,它应该是相同的命令......
答案 0 :(得分:8)
git commit -a
git add -u
- 它添加了所有已修改的文件,但与git add .
相比,它不会添加未跟踪的文件,添加跟踪和未跟踪文件(不包括删除),前提是它们包含修改。
请参阅Difference between "git add -A" and "git add ."
但是,是的,在大多数工作流程中,您git add
之前git commit
,或者您将主要使用git commit -a
。
答案 1 :(得分:4)
git add
可让您将提交分段。如果你提交适当大小的块,那并不总是必要的,但有时候它是不可避免的。
它还可以预览提交。使用git add
时,文件将签入本地索引,该索引与您的工作目录不同。例如,当您使用gitk --all
时,您的索引将显示为任何其他提交节点,并且您可以在将其实际提交到分支之前看到所有更改的效果,就像正常提交一样。
我发现非常有用的是git add -i
,它进入了交互模式。您也可以使用git commit --interactive
。在这里,您可以逐个选择要添加的文件(甚至是要添加的文件的哪些部分),检查每个文件的差异。
如果你不愿意,没有理由独立使用命令,但是保持命令彼此独立是有好处的,因为它们做了不同的事情,有些人喜欢能够修改工作索引而不提交
答案 2 :(得分:1)
每次添加文件或解决冲突时都可以使用它。如果您只是更改文件,删除文件或具有这种性质的东西,则无需使用它。
答案 3 :(得分:1)
当我认为文件已准备好提交时,我使用git add
,即使我知道在一段时间之后我也不会进行提交。除此之外,git diff
报告索引(暂存区域)与工作目录中的内容之间的差异。添加文件后,在再次修改文件之前,您不会看到差异。所以,如果我有多个文件,我将它们逐个添加到索引中,最后在所有已更改的文件都准备就绪时提交。因此,我很少实际使用git commit -a
。但是,每个人都要自己。这两种方法都有效,git
非常友好,不会强迫任何人按照自己想要的方式工作(在极限范围内) - 相反,它可以让你以你想要的方式工作。
答案 4 :(得分:0)
当您拥有不在源代码管理中的新文件时,仅使用git add。否则,在使用git commit时只需充分利用-a开关。