git add -p --忽略子模块?

发布于 2024-11-27 23:10:58 字数 427 浏览 0 评论 0原文

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

我已经设置了ignore = dirty 如此处所述。这似乎只适用于 git statusgit diff。我喜欢 git add -p 。每次我想添加一个小的更改时,都必须跳过 10 个脏的子模块,这让我很沮丧。

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

Is there a way to ignore dirty submodules when using git add --patch?

I've set ignore = dirty as explained here. This seems to only work with git status and git diff. I love git add -p. Having to skip through 10 dirty submodules every time I want to add a small change frustrates me.

I haven't quite figured out git add -i yet, but it looks like it handles dirty submodules the same way.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

洋洋洒洒 2024-12-04 23:10:58

用克林特的话来说,默默地添加忽略子模块更新似乎太危险了。

我不知道如何使用 add --patch 来做到这一点,但我可以使用 add --edit 和 vim 键映射来非常接近:

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

while will map \\x 以消除所有子模块更新块。其中的 \! 是 vim 特定的 bang 转义符,去掉这些反斜杠即可在其他地方使用 sed。

Having add silently ignore submodule updates seems, to quote Clint, tooooo dangerous.

I don't know how to do it with add --patch, but I can get pretty close with add --edit and a vim keymapping:

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

while will map \\x to eliminate all submodule update hunks. The \!s in that are vim-specific bang escapes, strip those backslashes to use the sed elsewhere.

夜光 2024-12-04 23:10:58

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

请参阅 提交 12434ef(2018 年 1 月 13 日),作者:Nguyễn Thái Ngọc Duy (pclouds)
(由 Junio C Hamano -- gitster -- 合并于 提交 e7e8077,2018 年 1 月 23 日)

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

对于“add -i”和“add -p”,我们可以对脏数据采取的唯一操作
子模块条目使用其 HEAD 中的新值更新索引。
内部的内容更改(来自其自己的索引、未跟踪的文件...)不会
没关系,至少在“git add -i”了解如何启动新的
子模块内的交互式添加会话。

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

With Git 2.16.x/2.17, you won't even need a --ignore-submodules option,
since "git add -p" was taught to ignore local changes to submodules as
they do not interfere with the partial addition of regular changes
anyway.

See commit 12434ef (13 Jan 2018) by Nguyễn Thái Ngọc Duy (pclouds).
(Merged by Junio C Hamano -- gitster -- in commit e7e8077, 23 Jan 2018)

add--interactive: ignore submodule changes except HEAD

For 'add -i' and 'add -p', the only action we can take on a dirty
submodule entry is update the index with a new value from its HEAD.
The content changes inside (from its own index, untracked files...) do not
matter, at least until 'git add -i' learns about launching a new
interactive add session inside a submodule.

Ignore all other submodules changes except HEAD.
This reduces the number of entries the user has to check through in 'git add -i', and the number of 'no' they have to answer to 'git add -p' when dirty submodules are present.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文