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


当前回答

在Git2.0中,gitadd-A是默认值:gitadd。等于git add-A。。

gitadd<path>现在与“gitadd-A<path>”相同,因此“git-add-dir/”将注意到您从目录中删除的路径记录移除情况。在旧版本的Git中,“gitadd<path>”忽略了删除。您可以对如果确实需要,请在<path>中只添加添加或修改的路径。

gitadd-A类似于gitadd:/(从顶部git repo文件夹添加所有内容)。注意,git2.7(2015年11月)将允许您添加名为“:”的文件夹!参见Junio C Hamano(gitster)的承诺29abb33(2015年10月25日)。


注意,在谈论gitadd时,从git2.0开始(2014年第一季度或第二季度)。(工作树中的当前路径),必须使用“.”在其他gitadd命令中也是如此。

这意味着:

“git-add-A.”等同于“git-add.;git-add-u”

(注意git-add-A和git-add-u的额外“.”)

因为git add-A或git add-u将在整个工作树上运行(仅启动git 2.0),而不仅仅是在当前路径上运行。

这些命令将在Git2.0中的整个树上运行,以与“gitcommit-a”和其他命令保持一致。由于没有机制使“git-add-u”的行为类似于“git-add-u”,所以对于那些习惯于“git add-u”(没有路径规范)只更新当前子目录中路径的索引的人来说,在git 2.0到来之前开始训练他们的手指明确说出“git add-u”是很重要的。当这些命令在没有路径规范的情况下运行时,以及当您在当前目录之外进行本地更改时,会发出警告,因为Git2.0中的行为会有所不同从今天的版本来看,在这种情况下。

其他回答

根据Charles的指示,经过测试后,我提出的理解如下:

# For the next commit
$ git add .   # Add only files created/modified to the index and not those deleted
$ git add -u  # Add only files deleted/modified to the index and not those created
$ git add -A  # Do both operations at once, add to all files to the index

这篇博客文章也可能有助于了解在什么情况下可以应用这些命令:从Git工作目录中删除已删除的文件。

这在2.0中不再适用。添加等于为同一路径添加-A,唯一的区别是树的其他路径中是否有新文件

在Git 2.x中:

如果您直接位于工作目录,那么gitadd-A和gitadd。工作没有区别。如果您在工作目录的任何子目录中,gitadd-A将添加整个工作目录中的所有文件,gitadd。将从当前目录中添加文件。

仅此而已。

我讨厌git的分段机制,这在其他SCM工具中找不到。所以我总是使用:

\gitadd--all&&\gitcommit--all

(即使使用\git add--all,\git commit也足够了)


用于添加:

--no-ignore-removal  --all     | add, modify, and remove index entries to match the working tree
--ignore-removal     --no-all  | add, modify             index entries to match the working tree

--intent-to-add                | add an entry for the path to the index,  with no content

-A是--all的缩写

gitadd<pathspec>等于:

对于Git 2.35.1版本:Git add--all<pathspec>Git:Git-add的旧版本--无所有<pathspec>

但是gitadd后面跟nothing,不等于gitadd--all,并且不会做任何事情:

gitadd--all(省略<pathspec>):处理整个工作树中的所有文件(旧版本的git用于将更新限制到当前目录及其子目录)。

gitcommit--全部

告诉命令自动暂存已修改和删除的文件,。你没有告诉Git的新文件不会受到影响

在Git2.0中,gitadd-A是默认值:gitadd。等于git add-A。。

gitadd<path>现在与“gitadd-A<path>”相同,因此“git-add-dir/”将注意到您从目录中删除的路径记录移除情况。在旧版本的Git中,“gitadd<path>”忽略了删除。您可以对如果确实需要,请在<path>中只添加添加或修改的路径。

gitadd-A类似于gitadd:/(从顶部git repo文件夹添加所有内容)。注意,git2.7(2015年11月)将允许您添加名为“:”的文件夹!参见Junio C Hamano(gitster)的承诺29abb33(2015年10月25日)。


注意,在谈论gitadd时,从git2.0开始(2014年第一季度或第二季度)。(工作树中的当前路径),必须使用“.”在其他gitadd命令中也是如此。

这意味着:

“git-add-A.”等同于“git-add.;git-add-u”

(注意git-add-A和git-add-u的额外“.”)

因为git add-A或git add-u将在整个工作树上运行(仅启动git 2.0),而不仅仅是在当前路径上运行。

这些命令将在Git2.0中的整个树上运行,以与“gitcommit-a”和其他命令保持一致。由于没有机制使“git-add-u”的行为类似于“git-add-u”,所以对于那些习惯于“git add-u”(没有路径规范)只更新当前子目录中路径的索引的人来说,在git 2.0到来之前开始训练他们的手指明确说出“git add-u”是很重要的。当这些命令在没有路径规范的情况下运行时,以及当您在当前目录之外进行本地更改时,会发出警告,因为Git2.0中的行为会有所不同从今天的版本来看,在这种情况下。

Git 2.0改变了一切(2014-05-28):

-A现在是默认值旧的行为现在可以使用--ignore删除。命令行上没有路径的子目录中的gitadd-u和gitadd-A对整个树进行操作。

因此,对于Git 2,答案是:

git添加。和git-add-A。在当前目录中添加新的/修改的/删除的文件gitadd—忽略删除。在当前目录中添加新的/修改的文件git add-u。在当前目录中添加修改/删除的文件如果没有圆点,则添加项目中的所有文件,而不考虑当前目录。