当前位置:   article > 正文

“git add -A”和“git add”之间的区别。

git add -a

问:

git add [–all | -A] 和 git add . 有什么区别?

huntsbot.com – 高效赚钱,自由工作

答1:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

此答案仅适用于 Git 版本 1.x。对于 Git 版本 2.x,请参阅其他答案。

概括:

git add -A 阶段所有更改

混帐添加。暂存新文件和修改,不删除(在当前目录及其子目录上)。

git add -u 阶段修改和删除,没有新文件

细节:

git add -A 等同于 git add .; git add -u。

关于 git add . 的重要一点是,它查看工作树并将所有这些路径添加到暂存更改(如果它们已更改或新且未被忽略),它不会暂存任何“rm”操作。

git add -u 查看所有已经跟踪的文件,并暂存对这些文件的更改(如果它们不同或已被删除)。它不会添加任何新文件,它只会暂存对已跟踪文件的更改。

git add -A 是执行这两项操作的便捷快捷方式。

您可以通过以下方式测试差异(请注意,对于 Git 版本 2.x,您的 git add . git status 输出会有所不同):

git init
echo Change me > change-me
echo Delete me > delete-me
git add change-me delete-me
git commit -m initial

echo OK >> change-me
rm delete-me
echo Add me > add-me

git status
# Changed but not updated:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me

git add .
git status

# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
# Changed but not updated:
#   deleted:    delete-me

git reset

git add -u
git status

# Changes to be committed:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me

git reset

git add -A
git status

# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
#   deleted:    delete-me

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

git add *之间的区别如何?

太糟糕了 git add -A -p 不能按预期工作(以交互方式询问未跟踪的文件)

请更新答案。它应该是:git add -A :/ 或 git add -A .

有关信息,在较新版本的 git 中,git add -u 已变为 git add -u :/,后一个参数是路径,允许您 -u 某些目录,:/ 处理整个树。

@CharlesBailey,Git 真的喜欢 无缘无故地让事情变得复杂。是否有一个真正的用例,某人会特别需要 git add -u 或 git add . 并且这样做可以让他的生活更轻松,即使在考虑了额外的心理税以确保没有同步问题?我想知道为什么 Git 不进一步将 add -u 拆分为两个单独的命令 add -u1 和 add-u2,其中一个适用于以数字开头的文件,另一个适用于以非数字开头的文件

答2:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

Git 版本 1.x

命令 新文件 修改文件 删除文件 描述 git add -A ✔️ ✔️ ✔️ 暂存所有(新的、修改的、删除的)文件 git add . ✔️ ✔️ ❌ 仅在当前文件夹中暂存新文件和修改文件 git add -u ❌ ✔️ ✔️ 仅暂存修改和删除文件

Git 版本 2.x

命令 新文件 修改文件 删除文件 描述 git add -A ✔️ ✔️ ✔️ 暂存所有(新的、修改的、删除的)文件 git add . ✔️ ✔️ ✔️ 暂存当前文件夹中的所有(新的、修改的、删除的)文件 git add --ignore-removal 。 ✔️ ✔️ ❌ 仅暂存新文件和修改文件 git add -u ❌ ✔️ ✔️ 仅暂存修改和删除文件

长格式标志:

git add -A 相当于 git add --all

git add -u 相当于 git add --update

进一步阅读:

Git 初学者:权威实用指南

学习 Git 的资源

学习 Git 分支

D3 解释 Git

谢谢你的桌子。有没有办法只添加修改过的文件。没有新文件或已删除文件

@Gokul:根据this post,您可以使用 git diff-files -z --diff-filter=M --name-only | xargs -0 git add 仅添加修改后的文件,但不能添加新文件或删除的文件。

这并不完全正确,因为 git add . 仅添加当前路径上的新文件。即,如果您有一个新目录 ../foo,git add -A 将暂存它,git add . 不会。

因此,git add . 等价于 git add -A .,即等价于 git add "*"

这应该是顶部/选定/固定的答案。 @cmcginty,如果你在 12 年后还在那里

答3:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

使用 Git 2.0, git add -A is default: git add . equals git add -A .。

git add 现在与“git add -A ”相同,因此“git add dir/”会注意到您从目录中删除的路径并记录删除。在旧版本的 Git 中,“git add ”会忽略删除。如果你真的想的话,你可以说“git add --ignore-removal ”来只在中添加添加或修改的路径。

git add -A 类似于 git add

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/936731
推荐阅读
相关标签