在使用git add --patch
时是否有方法忽略脏子模块?
我已经设置了ignore = dirty
,在这里解释。这似乎只适用于git status
和git diff
。我喜欢git add -p
。每当我想添加一个小更改时,不得不跳过10个脏子模块,这让我很沮丧。
我还没有完全弄清楚git add -i
,但它看起来像它处理脏子模块的方式相同。
用Clint的话来说,让add默默地忽略子模块更新似乎太危险了。
我不知道如何使用add -patch,但我可以非常接近add -edit和vim keymapping:
map <Leader>x :%!sed '/^diff --git/!{H;$!d};x;1{$!d;x};/nindex[^n]*160000n/d'<CR>
while将映射\x
以消除所有子模块更新块。其中的!
是vim特定的bang转义,去掉这些反斜杠以在其他地方使用sed。
使用Git 2.16.x/2.17,您甚至不需要--ignore-submodules
选项,
因为" git add -p
"被教导忽略对子模块的局部更改它们不会干扰常规变化的部分添加不管怎样。
见commit 12434ef (13 Jan 2018) by Nguyễn Thái Ngọc Duy (pclouds
)。
(由juno 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
'的数量。