我注意到git允许直接提交跟踪文件(已在本地修改),而无需使用暂存,例如:
$ git status -s .
M myfile.txt
$ git commit myfile.txt -m"1 way"
Run Code Online (Sandbox Code Playgroud)
改为使用“经典”两个步骤更好吗?:
$ git add myfile.txt
$ git commit myfile.txt -m"2 way"
Run Code Online (Sandbox Code Playgroud)
尝试git commit -a -m [message]
-A
告诉命令自动暂存已修改和删除的文件,但您未告知 Git 的新文件不受影响。
不适用于新文件,您仍然需要显式添加它们。
这只是一个阶段,然后一步提交。我发现这很方便,因为人们可以在使用时看到所有更改的状态status,并且我们通常会进行少量的增量提交。
改为使用“经典”两个步骤更好吗?
的文档git commit提到了不少于5种方法来告诉Git您想要在下一次提交中包括什么:
可以通过几种方式指定要添加的内容:
- 通过
git add在使用commit命令之前通过增量地“添加”对索引的更改(注意:即使已修改的文件也必须“添加”);- 通过
git rm删除从工作树和索引文件,再次使用前提交命令;- 通过列出文件作为commit命令的参数(不带
--interactive或不带--patch开关),在这种情况下,提交将忽略索引中进行的更改,而是记录列出的文件的当前内容(Git必须已经知道);- 通过使用
-a带有commit命令的开关,可以自动“添加”所有已知文件(即索引中已列出的所有文件)的更改,并自动“删除”已从工作树中删除的索引文件,以及然后执行实际的提交;- 通过使用带有commit命令的
--interactive或--patch开关,在完成操作之前,除了索引中的内容之外,一一决定哪些文件或块应该是提交的一部分。请参阅的“交互模式”部分git-add以了解如何操作这些模式。
有很多选择不是因为其中一些是“好”而另一些是“更好”。Git提供了很多选择,让您选择自己喜欢的一种或在特定情况下最适合的一种。
例如,如果您发现有一个修改后的文件应属于上一次提交的一部分(但您忘记了提交),并且索引当前包含使用问题中的第一个命令为下一次提交准备的文件(选项#上面列表中的3)允许您仅提交该文件而不更改索引。这样,您错过的文件将跳过该行,并在上次提交之后立即提交到其所属的位置,而不会干扰您正在准备的下一个提交。