git add -p --ignore-submodules?

问题描述 投票:3回答:2

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

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

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

git add git-submodules
2个回答
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以消除所有子模块更新帅哥。其中的\!s是vim特定的爆炸逃脱,剥去那些反斜杠以在其他地方使用sed。


1
投票

使用Git 2.16.x / 2.17,您甚至不需要--ignore-submodules选项, 因为“git add -p”被教导忽略对子模块的局部变化,因为它们无论如何都不会干扰部分添加常规变化。

参见commit 12434ef撰写的Nguyễ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'的数量。

© www.soinside.com 2019 - 2024. All rights reserved.