git submodule合并冲突:如何可视化?

chr*_*xxx 6 git merge conflict git-submodules

我最近发现的时候非常高兴

git submodule summary
Run Code Online (Sandbox Code Playgroud)

这很好地向我展示了提交子模块的签出提交在存储库中的引用之前或之后.

现在,当我处于与子模块冲突的合并过程中时,相同的命令不会产生有用的输出.我需要在我的主树中检查分支的痛苦序列gitk,以及cd进入子模块,在那里获取和gitk,比较sha1值...

什么是更方便的方式来了解冲突?

Ada*_*ruk 2

你可以制作一个脚本。这是这样一个脚本的核心:

 git --git-dir=submodulepath/.git diff \
    $(git ls-tree HEAD submodulepath | cut -c 15-54) \
    $(git ls-tree MERGE_HEAD submodulepath | cut -c 15-54)
Run Code Online (Sandbox Code Playgroud)

您可以将 diff 替换为 log 或任意数量的其他命令,以帮助您查看更改内容。一种是看看它是否是快进合并,在这种情况下,您可以快速解决冲突,而无需在子模块级别进行合并。

还有 gitslave 可以帮助您解决此类问题。

希望这可以帮助。