我应该什么时候使用git-add?

我应该什么时候使用git-add?,git,Git,我发现自己在每次提交前都在使用它。是这样吗?如果是这样,它应该是同一个命令…在添加文件或解决冲突时使用它。如果你只是更改一个文件、删除一个文件或类似的东西,你不需要使用它。有一个git commit-a,它类似于git add-u——它添加所有修改过的文件,但它不添加未跟踪的文件,这与git add.相反,后者同时添加跟踪和未跟踪的文件(不包括删除),只要它们包含修改 看 但是,是的,在大多数工作流中,您要么在git commit之前使用git add,要么主要使用git commit-a,仅当

我发现自己在每次提交前都在使用它。是这样吗?如果是这样,它应该是同一个命令…

在添加文件或解决冲突时使用它。如果你只是更改一个文件、删除一个文件或类似的东西,你不需要使用它。

有一个
git commit-a
,它类似于
git add-u
——它添加所有修改过的文件,但它不添加未跟踪的文件,这与
git add.
相反,后者同时添加跟踪和未跟踪的文件(不包括删除),只要它们包含修改


但是,是的,在大多数工作流中,您要么在
git commit
之前使用
git add
,要么主要使用
git commit-a
,仅当您有不在源代码管理中的新文件时才使用git add。否则,在使用git commit时只需充分利用-a开关。

当我认为一个文件已经准备好提交时,我会使用
git add
,即使我知道我要过一段时间才会提交。除此之外,
git diff
报告索引中的内容(暂存区域)和工作目录中的内容之间的差异。添加文件后,在再次修改之前,您不会看到其中的差异。因此,如果我有很多文件,我会将它们逐段添加到索引中,最后在所有更改的文件准备就绪时提交。因此,我很少实际使用
git commit-a
。然而,每个人都有自己的选择。这两种方法都能工作,git非常友好,不会强迫任何人按照它想要的方式(在限制范围内)工作,而是让你按照你想要的方式工作。

git add
让你可以分段提交。如果你在适当大小的块中提交,这并不总是必要的,但有时这是不可避免的

它还可以预览提交。使用
git add
时,文件将签入本地索引,该索引与工作目录分开。例如,当您随后使用
gitk--all
时,您的索引将显示为任何其他提交节点,并且您可以在将其提交到分支之前查看所有更改的效果,就像正常提交一样

我发现非常有用的是进入交互模式的gitadd-I。您还可以使用git commit--interactive。在这里,您可以逐个选择要添加的文件(甚至可以选择要添加的文件更改片段),检查每个文件的差异


如果您不想独立使用这些命令,那么没有理由单独使用它们,但是保持这些命令彼此独立肯定是有好处的,因为它们执行不同的操作,而且有些人喜欢能够在不提交的情况下修改其工作索引。

我不会投反对票,但我认为这是一个可怕的建议。git的一个重要特性是索引/暂存区。我建议你好好利用它。@camh:除非你不需要或不想要集结区。当我需要它时,它是必不可少的,但绝大多数时候我只是想承诺@克里斯的建议很好。