使用"git add ."(或滥用它)

3
我的理解是git add .会将目录中的所有文件添加到版本库中。
然后,如果您编辑了一个文件,您将只会使用git add file.name将该文件添加到暂存区。
我想知道在这个时候再次使用git add .是否有问题,以将您修改过的所有文件添加到暂存区?显然,这将在每个文件上运行git add,即使那些没有更改的文件,这样做是否有问题?我猜这不是问题,但想在这里确认一下。
当然,我也知道可以使用git commit -a,但我不确定这是否与使用git add .然后git commit相同,或者它是否足够聪明,只add特定的文件。
3个回答

2

git add . 命令不会删除已被删除的文件,更具体地说,它相当于:

git add --no-all .

您可能想要更新仅更改的文件。
git add --update .

在Git 2.0中,git add .命令将改为当前的git add --all .,因此它会删除已被删除的文件,并添加之前不存在的所有文件,所以您可能应该开始使用--update命令。

0
我也知道可以用 git commit -a,但我不确定它是否技术上等同于先执行git add .再执行git commit,或者它是否足够智能以仅添加特定文件。

git commit -agit add . ; git commit 并不完全相同。

git help commit 可以告诉你:

   -a, --all
       Tell the command to automatically stage files that have been
       modified and deleted, but new files you have not told git about are
       not affected.

话虽如此,如果您没有添加新文件,这两者的行为将是相同的。

重复执行git add foo不会引起任何副作用。


0

git add . 不会删除自上次提交以来已删除的任何文件。
如果您要删除文件,我建议使用 git rm,这样 git 就知道了被删除的文件,并且您不会忘记确保 git 知道它已被删除。正如另一条评论中提到的那样,git commit -a 会注意到已删除的文件。

我建议在 git add . 后执行 git status。

我每次都使用 add .,但是查看此 add 中放置了什么是一个好方法。对我来说,git add . 没有任何问题。

唯一的问题是,如果您在 git status 后看到一些不想推送的文件,则可以仅选择要在线上发布的文件。

通常,在对代码进行一些编辑后,建议使用一些文件进行推送,而不是使用大量文件进行推送,因为如果您在团队中工作,则其中一些文件可能会覆盖或合并到您的分支中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接