3

我的理解是git add .将目录中的所有文件添加到存储库中。

然后通常,如果您编辑一个文件,您git add file.name只需将该文件带到暂存区。

我想知道git add .此时再次执行是否有任何问题,将您修改过的所有文件添加到暂存区?显然,这git add在每个文件上运行,即使是那些没有更改的文件,这很糟糕吗?我猜这不是问题,但想在这里检查一下。

当然,我也知道我可以做,git commit -a但我不确定这在技术上是否与做git add .后面相同,git commit或者它是否足够聪明,只处理add特定文件。

4

3 回答 3

2

git add .不会删除已删除的文件,更具体地说,它与以下内容相同:

git add --no-all .

您可能想要的是仅更新已更改的文件。

git add --update .

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

于 2013-10-04T18:37:55.903 回答
0

我也知道我可以做到,git commit -a但我不确定这在技术上是否与git add .之后做的相同,git commit或者它是否足够聪明,只需添加特定文件。

git commit -a和说的不太一样git 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不会有任何副作用。

于 2013-10-04T10:50:53.603 回答
0

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

我建议你在 git add 之后创建一个 git status 。

我每次都使用,add .但这是查看您在此添加中添加的内容的好方法。对我来说 git 有什么问题add .

唯一的事情是,如果您在 git status 之后看到一些您不想推送的文件,您可以只选择您想要上线的文件。

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

于 2013-10-04T10:51:29.727 回答