【问题标题】:git add -p --ignore-submodules?git add -p --ignore-submodules?
【发布时间】:2011-08-04 02:32:14
【问题描述】:

有没有办法在使用git add --patch时忽略脏子模块?

我设置了ignore = dirty as explained here。这似乎只适用于git statusgit diff。我爱git add -p。每次我想添加一个小改动时都必须跳过 10 个脏子模块,这让我很沮丧。

我还没有完全弄清楚git add -i,但看起来它处理脏子模块的方式相同。

【问题讨论】:

  • 使用 Git 2.16.x/2.17(2018 年第一季度),您在执行 git add -pgit add -i 时不会再遇到子模块问题:请参阅 my answer below

标签: git add git-submodules


【解决方案1】:

引用 Clint 的话,默默地添加忽略子模块更新似乎太危险了。

我不知道如何使用 add --patch 来完成,但我可以使用 add --edit 和 vim 键映射非常接近:

map <Leader>\x :%!sed '/^diff --git/\!{H;$\!d};x;1{$\!d;x};/\nindex[^\n]*160000\n/d'<CR>

while 将映射\\x 以消除所有子模块更新块。 \!s 是 vim 特定的 bang 转义,去掉那些反斜杠以在其他地方使用 sed。

【讨论】:

    【解决方案2】:

    使用 Git 2.16.x/2.17,您甚至不需要 --ignore-submodules 选项,
    因为 "git add -p" 被教导忽略对子模块的本地更改 它们不会干扰定期更改的部分添加 无论如何。

    commit 12434ef(2018 年 1 月 13 日)Nguyễn Thái Ngọc Duy (pclouds)
    (由 Junio C Hamano -- gitster -- 合并到 commit e7e8077,2018 年 1 月 23 日)

    add--interactive:忽略除 HEAD 之外的子模块更改

    对于 'add -i' 和 'add -p',我们可以对肮脏的行为采取的唯一措施 子模块条目是使用来自其HEAD 的新值更新索引。
    内部的内容更改(来自其自己的索引,未跟踪的文件......)不会 重要的是,至少在“git add -i”了解启动新的 子模块内的交互式添加会话。

    忽略除 HEAD 之外的所有其他子模块更改
    这减少了用户必须在“git add -i”中检查的条目数量,以及当存在脏子模块时他们必须回答“git add -p”的“no”数量。

    【讨论】:

      猜你喜欢
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 2016-09-02
      • 2017-01-02
      相关资源
      最近更新 更多