假设有文件A、文件B和文件C,您对它们进行了修改。然后提交更改。
git add .
git commit -m "update"
所有文件都由git进行提交和跟踪。
假设fileD是由您或某个工具链创建的,并且您修改了fileD和fileA。然后进行提交。
git add .
git commit -m "update"
fileD被git跟踪(git add .
),而fileA和fileD都被git跟踪。
关于“为什么git commit -am“x”
可以工作,但是git add .
git commit -m“x”
不能工作?”
答:
这是因为您做了类似以下操作:
想象一下,fileE是由您或某个工具链创建的(假设它是fileE版本1),并且您对其进行了暂存。
git add .
接着您需要修改 fileE 文件(比如说变成了 fileE 版本2)。^ 然后提交。
git commit -m "update"
因此,只有文件E的版本1被提交。尽管这会让用户感到困惑,但这是git的预期行为:git不知道文件E的版本2。---- 对于未提交的文件E,您过早地进行了暂存,因为您忘记了在提交之前使用
git add fileE
(在^标记处)让git知道文件E的版本2。
因此,请记住在提交之前添加其最新版本的
所有内容。 (添加新版本,提交新版本)
-
让我们回滚到创建文件E之前的整个过程,然后再次进行操作,以便您不会错过文件E的版本2。
想象一下,文件E是由您或某个工具链创建的(假设它是文件E的版本1),然后您修改了文件E(假设它变成了文件E的版本2)。
然后提交。
git add .
git commit -m "update"
因此,文件E的版本2已提交。
如果你想要在提交历史中保留文件E的版本1,只需提交两次:一次为它的旧版本,一次为它的新版本(即,在修改为版本2之前提交一次,在其版本2上再提交一次)。
提示:
始终遵循此顺序:(添加新版本, 提交新版本)
(file modification) + git add . + git commit -m "update",
(file modification again) + git add . + git commit -m "update",
这样就不会遇到漏掉任何更改的问题了。
而且你甚至不需要用"-am"提供的“便利”。因为使用"-am"相当于要求git聪明地宽容你忘记git add。只要有清晰的思路遵循直觉的顺序,你在这个层面上就不需要宽容。有时候,不必要的宽容会增加大脑负担而没有好处。
git add . --update
命令来捕获这些文件。 - helion3