git:并行查看特定commit的源码

git: view source code of specific commit in parallel

我正在处理源代码,想查看之前提交的代码。通常我会用 git difftool --dir-diff 和 meld 作为 difftool 来做到这一点。但是,当我想查看更远的回溯提交或重构之前的提交时,meld 会让人难以阅读,因为代码更改太多。

我能想到的另一个解决方案是 git stash 更改,检查其他提交并查看代码。但是后来我无法查看我当前的代码,而且它也需要很长时间。

我正在寻找(也许)一个工具,它可以打开之前提交的源代码,以便我查看与当前代码并行的内容。基本上就像没有 diff 部分的 dirdiff 解决方案。我正在使用 git cli。谢谢并致以最诚挚的问候。

对于这种情况,我更喜欢使用git worktree add。这将在一个单独的工作树中创建一个单独的 git checkout(或 Git 2.23 或更高版本中的 git switch),该工作树具有自己的私有索引/暂存区域和其他私有项目,因此单独的工作树不会干扰您在主工作树中正在进行的工作。

独立工作树可以随心所欲地使用,也可以随心所欲地单独使用。这是一个完整的结帐。添加的工作树的主要约束是它必须位于任何现有工作树(包括其他添加的工作树)的 不同 分支上,但是如果您打算查看一个特定的提交,您可以在添加的工作树中使用“分离的 HEAD”模式来查看一个特定的提交。根据定义,所有 detached-HEAD 添加的工作树根本不在任何分支上,因此没问题。

使用 git worktree 时有两个小注意事项——需要注意的事项:

  • 它最初是在 Git 2.5 中添加的,所以如果你的 Git 比那个版本旧,你就没有它。

  • 在 Git 2.15 之前它有一个非常棘手的错误。这个错误只会影响一个添加的工作树,你在其中对其进行 更改 ,然后让它们停留两周或更长时间,所以如果你所做的只是 检查 旧的提交,它根本不会咬你。不过,如果您开始大量使用 git worktree add,我建议确保您的 Git 版本至少为 2.15。