解释“git add”的“-A”标志[重复]

Posted

技术标签:

【中文标题】解释“git add”的“-A”标志[重复]【英文标题】:Explain "-A" flag of "git add" [duplicate] 【发布时间】:2021-01-19 05:40:26 【问题描述】:

有人可以解释git add-A 标志吗? (--all, --no-ignore-removal)

我可以在手册页中看到它是这样说的:

-A, --all, --no-ignore-removal
           Update the index not only where the working tree has a file
           matching <pathspec> but also where the index already has an entry.
           This adds, modifies, and removes index entries to match the working
           tree.

           If no <pathspec> is given when -A option is used, all files in the
           entire working tree are updated (old versions of Git used to limit
           the update to the current directory and its subdirectories).

将其翻译成简单的英语是否正确:“当您运行命令时,无论您在目录树中的哪个位置,它都会添加文件”。这样可以吗?

另外,这是否意味着“只是为了确定而一直运行git add -A .”?

【问题讨论】:

【参考方案1】:

这个标志有两种不同的行为。

当前默认的一种行为是同时进行添加和删除。例如,如果您运行rm Makefile,那么使用此选项(或没有此选项且没有--no-all),Git 将使用git add Makefile 暂存删除。这比必须为某些路径运行 git add 而为其他路径运行 git rm 更方便。

如果您未指定要暂存的任何文件,则另一种行为是将所有文件暂存到工作树中已修改的任何位置。这相当于你所说的除了,它要求你不要指定任何路径。请注意,如果您编写 git add -A .,则不适用,因为在这种情况下,您已告诉 Git 仅暂存工作目录及其子目录。在这种情况下,-A 只有第一个行为(除非您使用的是非常旧的 Git,否则无论如何它都会有)。

如果您的目标是在工作树中暂存所有更改,无论您身在何处,只需运行 git add -A

【讨论】:

这是完美的。非常感谢!这是手册页中应该说明的内容。

以上是关于解释“git add”的“-A”标志[重复]的主要内容,如果未能解决你的问题,请参考以下文章

何时使用“git add .”当“git add -A”[重复]

ELK--filebeat命令行参数解释

打包时如何设置解释器标志

rsync增量同步标志位详细解释

mssql名词解释

Git add后跟git reset删除了我的所有文件[重复]