使用git add --patch
时有没有办法忽略脏子模块?
我已设置ignore = dirty
as explained here。这似乎仅适用于git status
和git diff
。我爱git add -p
。每次我想添加一个小的改变时,我必须跳过10个脏的子模块让我感到沮丧。
我还没有想出git add -i
,但看起来它以同样的方式处理脏子模块。
答案 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 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
”数量。