为什么我们要使用 git add -u?

Why would we ever want to use git add -u?

如果我正确理解 git add 的不同选项,git add -u 只会将修改和删除的文件添加到暂存区,而 git add .不仅添加修改和删除的文件,还添加未跟踪的文件。所以我想知道为什么我们会在有 git add 时使用 git add -u 。或 git 添加 -A

我经常使用它:

  • 如果git status告诉我有各种修改后的文件没有暂存提交,而我想准确地添加那些文件,git add -u准确地添加那些没有提交的文件我不得不考虑一下。

  • 如果git status告诉我有各种修改文件,and/or其他文件,我不想en-masse添加[=39= git status提到的所有,我运行git diffgit diff --staged1if/as想要的, git add 个人,也许偶尔 git add -p,等等

  • 如果 git status 告诉我有未跟踪的文件我 想要添加,我可以使用 git add .(我很少/有节制地使用它,以免意外地避免添加应该保持未跟踪的文件;如果 git status 显示我 想要的未跟踪文件,我将它们添加到适当的 .gitignore先,但我还是倾向于不运行 git add ..)

请注意,虽然 git add -A 会“添加”一个删除(并且 git add file-i-removed 会做同样的事情),但我的大脑对这个结构犹豫不决:我用 git rm 代替.


1实际上,我的手指习惯于将此输入为 git diff --cached。它们的作用完全相同。

缩写形式:这取决于您的 build/test 周期。如果你产生了很多碎屑或其他 local-only 工作并且绕过它比明确管理它更容易,git add -u 使得 drop-dead 很容易只添加东西 git 已经知道你在乎了。

也许您正在生成类似 UI-trace 的数据集来提供单元测试并且有很多候选对象,您明确添加了值得跟踪的对象并使用 git add -u 应用任何自动生成的更新(例如说要让数据集随着跟踪驱动程序的变化而保持最新。

当然,您可以创建一个“不要跟踪这些”目录并将 not-ready-for-prime-time 内容保留在那里,但这比仅使用 git add -u.

更乏味