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

A commit introduced breaking changes across many submodules. What is a visual tool I can use to compare previous commits in all submodules?

当 commit 引入 breaking changes across 许多子模块时,在我恢复到工作状态后,我还没有找到最好的过程和可视化工具来区分整个树和子模块来引入修复,我想知道如何解决它。

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

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

我尝试的另一个选择是使用 git diff 和 vscode 作为外部编辑器,但我的尝试只是将根模块中的提交带到 vscode,然后不再呈现更多。

git difftool aa77184152c14e99f3ca94c45023bcda1206f8d1 --submodule=diff

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

git diff 3b65611912a8f95719337c64cf048258c855d1f8 --submodule=diff

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