git add -p --ignore-submodules?

时间:2011-08-04 02:32:14

标签: git add git-submodules

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

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

我还没有想出git add -i,但看起来它以同样的方式处理脏子模块。

2 个答案:

答案 0 :(得分:1)

在默认情况下忽略子模块更新似乎引用Clint,太危险了。

我不知道如何使用add --patch来实现它,但是我可以通过添加--edit和vim键映射来完成:

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

同时将映射\\x以消除所有子模块更新。 \!中的{{1}}是特定于vim的爆炸逃逸,剥去那些反斜杠以在其他地方使用sed。

答案 1 :(得分:1)

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

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

  

add - interactive:忽略除HEAD

之外的子模块更改      

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

     

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