0

我正在处理源代码并想查看以前提交的代码。通常我会用git difftool --dir-diffdifftool 来做这个并融合。但是,当我想查看更远的提交或重构之前的提交时,meld 会使其难以阅读,因为代码更改太多。

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

我正在寻找(也许)一个工具,它可以打开以前提交的源代码,以便我查看与当前代码平行的情况。基本上就像dirdiff没有差异部分的解决方案。我正在使用 git cli。谢谢和最好的问候。

4

1 回答 1

3

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

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

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

  • 它最初是在 Git 2.5 中添加的,所以如果你的 Git 比这更早,你就没有它。

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

于 2020-11-16T22:44:48.857 回答