"git add -u" 和 "git add -A" 有什么区别?它们都和编程有关。

42
好的,我正在搜索“如何从Git中手动删除文件”,而不是为每个文件执行“git rm file.txt”,当我遇到“从磁盘中已删除的多个文件中删除Git存储库”时。最受欢迎的两个命令是:git add -ugit add -A。虽然它们都对我有用,但我仍然无法理解它们之间的区别,该页面上的解决方案也没有解释。我的问题是,它们之间有何不同,还有哪些其他的git命令可以用来删除已经从磁盘手动删除的文件?

可能非常相关:https://dev59.com/FXI95IYBdhLWcg3wtwRe。 - Ulrich Eckhardt
2个回答

55

简短回答:

git add -A 等同于 git add . + git add -u


解释:

当你执行 "git add ." 命令时,它会将所有文件(包括已存在、已修改和新增的)添加到暂存区,但不会删除已从磁盘中删除的文件。

"git add -u" 命令只会将当前已跟踪的文件(已被修改)添加到暂存区,并检查它们是否已被删除(如果是,则从暂存区中删除)。这意味着它不会将新文件添加到暂存区。

执行 "git add -A" 命令会执行这两个步骤,也就是将整个目录都添加到暂存区。


摘要:

  • git add -A :将所有内容添加到暂存区
  • git add -u :仅将修改过的文件添加到暂存区
  • git add . :将所有内容添加到暂存区,但不包括已删除的文件

阅读文档以获取更多信息。


11
文档中可以得知,使用 Git 版本 2.0,git add . 命令也会记录文件的删除操作。现在,“git add <path>”与“git add -A <path>”的效果相同,所以当你使用命令“git add dir/”时,它会注意到你从目录中删除的文件,并记录这个删除操作。 - user650654
@sheharyar 这并不完全正确。'git add .' 仅添加当前目录及其子目录中受影响的文件。'.' 就像其他路径一样。'git add -A' 添加所有文件,甚至包括当前目录上面的目录中的文件。 - onlinespending

13

git add -A 会追踪新添加的、修改的和已删除的文件。

git add -u 会追踪修改的和已删除的文件。


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