是否有`git add 的缩写?&& git commit --amend`?

Fan*_*ong 0 git

我已经知道这git commit -a是 的缩写git add -u && git commit

git add . && git commit --amend所以我想知道第一次提交后修改某些文件时是否存在短路?


编辑

改为git add .git add -u这不是同一件事。

tor*_*rek 5

我已经知道这git commit -agit 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 相对较新的人,因此我们不会在这里进一步介绍它们:只需记住这里有一个带有钩子的极端情况。