【问题标题】:Get a preview of "git add -u"?预览“git add -u”?
【发布时间】:2012-02-27 12:23:11
【问题描述】:

我正在尝试编写一个 .gitignore 文件。如果我要运行“git add -u”,我想预览将添加的所有内容。那可能吗?或者,如果我运行“git add -u”,并且添加了一些我不想要的东西,我可以撤消整个事情吗?然后我会再调整我的 .gitignore 并重复。

谢谢

【问题讨论】:

  • 说实话,现在我很愚蠢地理解 'git add --help' 对 '-u' 的意思。在应用 'git add -u' 之前和之后,我们(最终)会在 'git status' 中看到什么不同?如果我们改用“git add”呢?
  • 这对您的用例有帮助吗(如何在提交之前撤消“git add”?)? stackoverflow.com/q/348170/2623045

标签: git


【解决方案1】:

我想你正在寻找:

git add -n

.. 这是--dry-run 短开关:)

编辑:从存储库的根目录,尝试:

git add -n .

如果您错误地添加了本应被忽略的文件,而您没有在试运行中发现它,您只需使用:

git reset HEAD --

.. 这基本上会取消暂存文件。

【讨论】:

    【解决方案2】:

    我发现了

    git add -n .
    

    同时显示修改过的文件

    git ls-files --others --exclude-standard
    

    没有。

    现在对我来说,第二个是预览/测试 .gitignore 的首选方式。

    我还在帖子中发现了一些不鼓励使用“添加”的 cmets。完全不喜欢'add -u'。

    我也试过

    git add -u -n
    

    但根据我的经验,这仅显示修改后的文件。

    https://stackoverflow.com/a/10888722/2623045

    顺便说一句:在我看来,git 子模块在这种情况下是一个额外的用例(不知道对 'git ls-files' 的额外开关是否可以反映这一点)

    【讨论】:

      【解决方案3】:

      请注意,相同的预览不适用于交互式添加。

      Git 2.32(2021 年第二季度)现在更加清晰:“git add -i --dry-run(man)dry-run,这令人惊讶。
      选项的组合教会了错误。

      参见 Øystein Walle (Osse)commit a1989cf(2021 年 5 月 5 日)。
      (由 Junio C Hamano -- gitster -- 合并到 commit 47fa106,2021 年 5 月 14 日)

      add:如果--dry-run--interactive 都给出,则死亡

      签字人:Øystein Walle

      交互机制不服从--dry-run.
      如果两个标志都通过,则适当死亡。


      并且:使用 Git 2.34(2021 年第四季度),停止“git add --dry-run(man) 创建新的 blob 和树对象。

      参见René Scharfe (rscharfe)commit e578d03(2021 年 10 月 12 日)。
      (由 Junio C Hamano -- gitster -- 合并到 commit 6ffb5fc,2021 年 10 月 25 日)

      add: 不要用 --dry-run 写对象

      报告人:git.mexon@spamgourmet.com
      签字人:René Scharfe

      当给定选项--dry-run/-n 时,“git add(man) 不会更改索引,但仍会写出新的目标文件。
      只对后者进行哈希而不写入,以使运行尽可能干燥。

      【讨论】:

        猜你喜欢
        • 2011-01-12
        • 2018-07-09
        • 2013-02-07
        • 2021-05-28
        • 2014-08-01
        • 1970-01-01
        • 2013-07-17
        • 2011-01-11
        • 2014-11-20
        相关资源
        最近更新 更多