命令 git add [--all|-A]
似乎与...相同 git add .
。它是否正确?如果没有,它们有何不同?
命令 git add [--all|-A]
似乎与...相同 git add .
。它是否正确?如果没有,它们有何不同?
对于 Git版本2.x.,也见下面的答案。
概要:
git add -A
阶段 所有
git add .
阶段新的和修改的, 没有删除
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版本2.x.,也见下面的答案。
概要:
git add -A
阶段 所有
git add .
阶段新的和修改的, 没有删除
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版本1.x.:
Git版本2.x.:
长形标志:
git add -A
相当于 git add --all
git add -u
相当于 git add --update
进一步阅读:
同 Git 2.0, git add -A
是默认值: git add .
等于 git add -A .
。
git add <path>
是相同的 ”git add -A <path>
“现在,那样 “git add dir/
“会注意到你从目录中删除的路径 记录删除。
在旧版本的Git中,“git add <path>
“以前忽略了删除。你可以说 ”
git add --ignore-removal <path>
“ 至 仅添加添加或修改的路径<path>
,如果你真的想。
git add
就好像 git add :/
(从顶级git repo文件夹添加所有内容)。
请注意,git 2.7(2015年11月)将允许您添加名为“:
“!
看到 提交29abb33 (2015年10月25日)by Junio C Hamano(gitster
)。
注意 启动git 2.0(2014年第一季度或第二季度),谈论时 git add .
(工作树中的当前路径),你必须使用'.
'在另一个 git add
命令也是如此。
这意味着:
“
git add -A .
“相当于”git add .; git add -u .
“
(注意额外'.
'为 git add -A
和 git add -u
)
因为 git add -A
要么 git add -u
将操作(仅启动git 2.0) 整个工作树,而不仅仅是当前的道路。
那些命令会 在Git 2.0中对整个树进行操作以保持“
git commit -a
“和其他命令。 因为没有机制可以“git add -u
“表现得好像”git add -u .
“,这对那些习惯的人很重要”git add -u
“(没有pathspec)仅为当前子目录中的路径更新索引,以开始训练他们的手指明确说出”git add -u .
“当他们在Git 2.0出现之前就意味着它。如果在没有pathspec的情况下运行这些命令,并且在当前目录之外进行本地更改,则会发出警告,因为Git 2.0中的行为会有所不同 在这种情况下从今天的版本。
所以从上面的Charles说明中,经过测试,我提出的理解如下:
# For the next commit
$ git add . # add to index only files created/modified and not those deleted
$ git add -u # add to index only files deleted/modified and not those created
$ git add -A # do both operation at once, add to index all files
此链接也可能有助于了解可以应用这些命令的情况: 从Git工作目录中删除已删除的文件。
迟到了,但这个问题也值得更快速的回答。
git add -A
两者都在下面(与...相同) git add --all)
git add .
暂存新的+修改过的文件
git add -u
阶段已修改+已删除的文件
事情变了 使用Git 2.0:
-A
现在是默认值--ignore-removal
git add -u
和 git add -A
在命令行上没有路径的子目录中,对整个树进行操作所以对于git 2,答案是:
git add .
和 git add -A .
在当前目录中添加新/已修改/已删除的文件git add --ignore-removal .
在当前目录中添加新/修改的文件git add -u .
在当前目录中添加已修改/已删除的文件最后我想我得到了这个,非常感谢大家。我希望这可以增加一些清晰度。
!The syntax is
git add <limiters> <pathspec>
! Aka
git add (nil/-u/-A) (nil/./pathspec)
限制器可以是-u或-A或nil。
Pathspec可以是文件路径或点,'。'指示当前目录。
关于git'如何添加'的重要背景知识。
现在,鉴于这些知识,我们可以应用上面的答案。
限制器如下。
pathspec如下。
git add -A .
git add -u .
总之,我的政策是;