我的理解是git add .
会将目录中的所有文件添加到存储库中。
然后通常情况下,如果您编辑文件,您将git add file.name
只将该文件带到暂存区域。
我想知道此时再次执行git add .
是否有任何问题,将您修改过的所有文件添加到暂存区域?显然,这会在每个文件上运行git add
,即使那些没有改变的文件也是如此糟糕?我猜它不是问题,但想在这里查看。
当然,我也知道我可以git commit -a
,但我不确定这在技术上是否与git add .
后跟git commit
相同或者是否足够聪明只需add
个特定文件。
答案 0 :(得分:2)
git add .
不会删除已删除的文件,更具体地说,它与以下内容相同:
git add --no-all .
您可能想要的只是更新已更改的文件。
git add --update .
在Git 2.0中,git add .
将更改为当前git add --all .
,因此它会删除已删除的文件,并会添加之前不存在的所有文件,因此您可能应该开始使用{{ 1}}而不是。
答案 1 :(得分:0)
我也知道我可以做
git commit -a
,但我不确定这是不是 技术上与执行git add .
后跟git commit
或if。相同 它足够智能,只需添加特定文件。
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
不会产生任何副作用。
答案 2 :(得分:0)
git add .
不会删除自上次提交以来删除的所有文件
如果你要删除文件,我会使用git rm,以便git被告知删除的文件,你不要忘记确保git知道它被删除了。正如另一条评论所述,git commit -a
会注意到已删除的文件。
我建议你在git add之后制作一个git状态。
我每次都使用add .
,但这是一个很好的方式来查看你在这个添加中添加的内容。对我来说,git add .
唯一的问题是,如果你看到一些你不想推送的git状态文件,你可以选择你想要联机的文件。
通常在建议对某些文件进行一些编辑之后,使用大量文件进行推送是一种很好的方法,因为如果你在团队中工作,这些文件中的一些可以覆盖o在内部进行一些合并你的分支