【问题标题】:git: view source code of specific commit in parallelgit:并行查看特定提交的源代码
【发布时间】:2021-02-27 11:19:56
【问题描述】:

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

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

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

【问题讨论】:

  • 考虑使用git worktree add 添加一个单独的工作树,该工作树具有一个分离的 HEAD,它正在查看您关心的提交。由于它是一个单独的工作树,它不会影响您正在处理的内容;因为它是一个完整的检查,所以你所有的源检查工具都应该可以正常工作。
  • @torek:这太棒了!我从来没有听说过这个功能。请将此评论作为答案发表,然后我会接受。 BR

标签: git commit difftool


【解决方案1】:

对于这种情况,我更喜欢使用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。

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    相关资源
    最近更新 更多