赞
踩
git add [–all | -A] 和 git add . 有什么区别?
huntsbot.com – 高效赚钱,自由工作
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
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,其中一个适用于以数字开头的文件,另一个适用于以非数字开头的文件
打造属于自己的副业,开启自由职业之旅,从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 年后还在那里
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。