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


当前回答

-A选项添加、修改和删除索引项以匹配工作树。

在Git 2中,-A选项现在是默认选项。

当。根据Git文档,添加了将更新范围限制为当前所在的目录

如果在使用-A选项时未指定<pathspec>,则会更新整个工作树中的所有文件(旧版本的Git用于限制对当前目录及其子目录的更新)。

我要补充的一点是,如果使用--interactive或-p模式,那么gitadd的行为就像使用了update(-u)标志一样,不会添加新文件。

其他回答

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


摘要:

gitadd-A阶段所有更改git添加。暂存新文件和修改,而不删除(在当前目录及其子目录上)。gitadd-u阶段修改和删除,无需新文件


详细信息:

git-add-A相当于git-add。;git-add-u。

关于gitadd的要点。它查看工作树,并将所有这些路径添加到已阶段的更改中,如果这些更改已更改或是新的且未被忽略,则不会阶段任何“rm”操作。

gitadd-u查看所有已跟踪的文件,如果这些文件不同或已被删除,则对这些文件进行更改。它不添加任何新文件,只对已跟踪的文件进行更改。

gitadd-A是实现这两个目的的便捷快捷方式。

您可以使用以下方式测试差异(注意,对于Git 2.x版本,您的Git-add.Git状态输出将不同):

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

-A选项添加、修改和删除索引项以匹配工作树。

在Git 2中,-A选项现在是默认选项。

当。根据Git文档,添加了将更新范围限制为当前所在的目录

如果在使用-A选项时未指定<pathspec>,则会更新整个工作树中的所有文件(旧版本的Git用于限制对当前目录及其子目录的更新)。

我要补充的一点是,如果使用--interactive或-p模式,那么gitadd的行为就像使用了update(-u)标志一样,不会添加新文件。

两个git add。gitadd-A将在更新版本的git中暂存所有新的、修改的和删除的文件。

不同之处在于,git add-A将文件存放在属于您工作的git存储库的“更高、当前和子目录”中。但做一个git加法。仅暂存当前目录及其后的子目录中的文件(而不是位于外部的文件,即更高的目录)。

下面是一个示例:

/my-repo
  .git/
  subfolder/
    nested-file.txt
  rootfile.txt

如果您当前的工作目录是/my repo,并且您执行rm rootfile.txt,然后是cd子文件夹,然后是git add。,则它将不暂存已删除的文件。但是,无论您从何处执行命令,执行git add-A肯定会进行此更改。

git添加。等于git add-A。仅将当前文件夹和子文件夹中的文件添加到索引中。

gitadd-A将工作树中所有文件夹的文件添加到索引中。

注:有关Git 2.0的信息(2014-05-28)。

根据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,唯一的区别是树的其他路径中是否有新文件