我已经知道这git commit -a是 的缩写git add -u && git commit。
git add . && git commit --amend所以我想知道第一次提交后修改某些文件时是否存在短路?
编辑
改为git add .,git add -u这不是同一件事。
我已经知道这
git commit -a是git add . && git commit
啊,但事实并非如此。让我们稍后再回到这个话题。
... [有] 的缩写吗
git add . && git commit --amend
不,但git commit -a --amend有点接近。
这两者都可以更好地表达,不是作为,而是作为。(如果使用单独的 ,还是有区别的,但是没那么明显。我稍后会简单描述一下。)git add . && git commit optionsgit add -u && git commit optionsgit add
特别是,git add .告诉 Git 添加当前目录及以下目录中的所有文件。这包括任何新的(但未跟踪的)文件,除非这些未跟踪的文件也列在排除文件中(.gitignore或.git/info/exclude举例)。但git commit -a不会添加新文件:它只会更新已跟踪的文件。
(注意:在 Git 2.0 及更高版本中,git add -u在工作树中的任何位置添加文件,而不仅仅是在当前级别及以下级别;用于git add -u .将其限制为当前级别及以下级别。)
现在,关于使用单独的git add和后续的git commit以及使用-a标志 to之间的区别git commit:有两个对您可见:
首先,假设您改变了对提交的想法,并完全中止它。在这种情况下,git add任何更新仍会暂存以供提交。您可以继续照常编辑和添加文件,但git add仍会添加通过命令添加的现有文件。但是使用 时git commit -a,您的文件不会添加以供提交。
其次,如果你有一个预提交钩子,那么预提交钩子将使用的索引是不同的。如果您也开始使用--onlyor--include标志,这会变得特别复杂。这些细节不适合 Git 相对较新的人,因此我们不会在这里进一步介绍它们:只需记住这里有一个带有钩子的极端情况。