首页 > 解决方案 > 提交在许多子模块中引入了重大更改。我可以使用什么可视化工具来比较所有子模块中的先前提交?

问题描述

当提交在许多子模块中引入重大更改时,在我恢复到工作状态后,我还没有找到最好的流程和可视化工具来区分整个树和子模块以引入修复,我想知道如何很好地解决它。

我主要在 mac 上使用 vscode 作为编辑器,而 gitlens 似乎没有提供所有子模块的信息以及两个提交之间的比较。在 Linux 上,我的方法是检查两个不同的文件夹并使用程序“融合”来直观地比较两棵树。这很简单并且效果很好,但我想找到另一种方法,不涉及将树的两个单独签出到不同的文件夹,而是直接使用提交历史记录。

Meld 也可以在 mac os 上使用,但它无法在我的安装和错误中撤消。

我尝试的另一个选择是将 git diff 与 vscode 一起用作外部编辑器,但我的尝试仅将根模块中的提交带到 vscode 中,然后停止呈现更多内容。

git difftool aa77184152c14e99f3ca94c45023bcda1206f8d1 --submodule=diff

这种类型的操作确实会在 shell 中显示所有子模块差异信息,但不会在外部代码编辑器中显示。

git diff 3b65611912a8f95719337c64cf048258c855d1f8 --submodule=diff

标签: gitvisual-studio-codediffmeld

解决方案


您可以创建您的 repo 的第二次签出(git worktree例如使用),并使用常规 diff 工具(如meld)来比较磁盘上的两个目录。


推荐阅读