【问题标题】:git add versus git add allgit add vs git add all
【发布时间】:2014-05-03 15:26:43
【问题描述】:

git add .git add --all . 之间有什么区别我读了手册但我还是不明白。请在您的回答中包括.gitignore 文件是如何受到影响的:即--all 是否假装没有忽略文件?

【问题讨论】:

    标签: git github terminal add


    【解决方案1】:

    --all 的另一个名称是--no-ignore-removal,在我看来更清晰。从这个替代名称中,它的作用可能立即显而易见:如果任何文件在工作树中被删除,它也会在索引中被删除。

    创建了一个新的 repo,并添加了一个文件,但没有提交,状态如下:

    $ 混帐状态 在分支主 初始提交 要提交的更改: (使用“git rm --cached ...”取消暂存) 新文件:文件

    现在,当文件被删除并且git add 在没有--all 的情况下运行时会发生以下情况:

    $ 混帐添加。 警告:您运行 'git add' 时既没有使用 '-A (--all)' 也没有使用 '--ignore-removal', 对于您删除的路径,其行为将在 Git 2.0 中发生变化。 像“文件”这样的路径 此版本的 Git 会忽略从工作树中删除的内容。 * 'git add --ignore-removal',这是当前默认值, 忽略您从工作树中删除的路径。 * 'git add --all' 将让你也记录删除。 运行 'git status' 以检查您从工作树中删除的路径。 $ 混帐状态 在分支主 初始提交 要提交的更改: (使用“git rm --cached ...”取消暂存) 新文件:文件 未为提交暂存的更改: (使用“git add/rm ...”更新将要提交的内容) (使用“git checkout -- ...”丢弃工作目录中的更改) 删除:文件

    事实上,git add -A 也会从索引中删除它:

    $ 混帐添加 -A 。 $ 混帐状态 在分支主 初始提交 无需提交(创建/复制文件并使用“git add”进行跟踪)

    您在问题中提到了 gitignore,但 --all 与此无关。添加忽略文件的选项是--force (-f)。

    【讨论】:

    • 所以git add --all . 将在 github 上删除我在本地仓库中删除的内容?我理解那部分吗?
    • @KatedralPillon 很少有命令可以删除 Github 或任何其他远程仓库上的任何内容。 git add --all . 将删除索引中的文件,如果它们已在您的工作树中被删除。随后的git commit 将创建一个本地提交,其中包含这些文件的删除。只有当您将提交推送到 Github 时,您才会看到那里的任何更改。
    猜你喜欢
    • 2016-11-12
    • 2013-07-17
    • 2016-02-14
    • 2014-05-25
    • 2015-03-16
    • 2020-08-11
    • 2014-11-20
    • 2018-07-09
    相关资源
    最近更新 更多