【问题标题】:Is there a short for `git add . && git commit --amend`?`git add . && git commit --amend`?
【发布时间】:2021-07-04 07:57:54
【问题描述】:

我已经知道git commit -agit add -u && git commit 的缩写。

所以我想知道当我们在第一次提交后修改了一些文件时,是否有 git add . && git commit --amend 的缩写?


编辑

git add .改成git add -u,这不是一回事。

【问题讨论】:

标签: git


【解决方案1】:

我已经知道git commit -agit add . && git commit 的缩写

啊,但事实并非如此。让我们稍后再回到这个话题。

...[是否有]git add . && git commit --amend 的缩写

不,但git commit -a --amend 有点接近。

这两个更好地表达,不是git add . &amp;&amp; git commit <em>options</em>,而是git add -u &amp;&amp; git commit <em>options</em>。 (使用单独的git 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 标志到git commit 之间的区别:您可以看到两个:

  • 首先,假设您改变了对提交的想法,并完全中止了它。在这种情况下,使用git add,任何更新仍暂存于提交。您可以像往常一样继续编辑和添加文件,但仍会添加使用git add 命令添加的现有文件。但是使用git commit -a,您的文件不会为提交而添加。

  • 其次,如果你有一个pre-commit hook,那么pre-commit hook所使用的as索引是不同的。如果您也开始使用--only--include 标志,这将变得特别复杂。这些细节不适合那些对 Git 比较陌生的人,所以我们不会在这里进一步介绍它们:请记住这里有一个带有钩子的角落案例。

【讨论】:

    【解决方案2】:

    git commit -a 将自动 git add 更改所有跟踪的文件。您可以将其与--amend 标志结合起来得到git commit -a -amend

    【讨论】:

      猜你喜欢
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      • 2017-04-15
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 2010-11-30
      相关资源
      最近更新 更多