在git中逐步查看文件的历史记录;类似于p4v游戏中时光倒流

时间:2011-10-05 20:35:38

标签: git

我正在寻找一种工具来帮助您探索文件的历史记录。具体来说,我想查看文件的全部内容,但能够及时前进和后退。装饰的额外乐趣,表示前一次转速或其他指定转速的差异。

目前我使用git blame,可以查看哪些更改会影响每个当前行。然后我必须通过一些特定的提交重新启动该文件的查看器。这是劳动密集型的,如果一个工具已经自动化,我很乐意使用它!

Perforce的timelapse view是迄今为止我见过的最好的工具。

9 个答案:

答案 0 :(得分:13)

gitk -- filename应该做你想要的,如果你在中间提起上下文行,并在修订版中向上和向下滚动。

答案 1 :(得分:9)

这是我用Java编写的Git Time-Lapse View工具:

https://github.com/JonathanAquino/git-time-lapse-view

enter image description here

答案 2 :(得分:7)

Tig是git的文本模式界面,它提供了一个非常有用的功能:

  • 及时退回给定行的提交( b 键)。
  • 返回到给定行(键)的父提交。
  • 及时返回您之前的视图(< 键)。

当步进父提交时,它不会保留查看位置(似乎在使用行的提交时)。

答案 3 :(得分:7)

git gui blame是一个选项,虽然不是很好。

来自Ansible的gc_storage示例:

git gui blame --line=155 library/cloud/gc_storage

git gui blame --line=155 library/cloud/gc_storage

右键单击一行并选择Blame Parent Commit以及时移回,使用左上角的视图历史记录箭头返回到最近的更改。

答案 4 :(得分:4)

如果您使用的是vim,git-time-lapse插件也可以为您提供帮助。

它允许您浏览文件的历史记录,以vimdiff形式呈现每个提交,并在下面的单独的vsplit中提交消息。

答案 5 :(得分:2)

我有一个Perl脚本(太大而且太笼统,无法发布作为这个问题的答案),它在git中获取指定文件的每个修订版本的副本。 (它也适用于RCS和CVS)。

编辑:我终于到了releasing it on Github

它的核心是这个(伪代码):

  • 运行git log --date=raw -- filename
  • 在输出中搜索commitDate:行。
  • 对于每个commit-id:
    • 运行git show commit-id ./filename > target-filename

target-filename是由commit-id,timestamp和/或顺序索引的某种组合构成的。

结果可能是,例如,一堆文件,如:

foo__001.txt
foo__002.txt
foo__003.txt

其中每个都是git存储库中的foo.txt版本。然后,我可以查看每个文件和/或差异的连续版本。

这并没有给你所要求的一切,但它应该是一个好的开始。

答案 6 :(得分:2)

如果你愿意的话,你也可以使用类似github的东西 - 它的特定文件的历史视图显示了每个文件编辑时间和由谁编写的概要,并为您提供方便的链接以查看该文件的差异提交,该提交的文件的当前版本等。

答案 7 :(得分:1)

尝试https://github.com/pomber/git-history,当您在水平时间轴上移动时,该文件会显示完整的文件并带有精美的滑入动画:

demo gif

您甚至不需要安装它,只需在任何Github文件url上更改域!

弱点,截至本文撰写:

答案 8 :(得分:0)

如果您使用的是Visual Studio,CodeLineage很不错。

https://visualstudiogallery.msdn.microsoft.com/bb3d22aa-29bf-41e1-acc9-92482bee4646

我喜欢Jonathan Aquino的Git Time-Lapse向您显示提交注释,但CodeLineage很好,因为它集成在Visual Studio中,您可以选择要比较的两个修订版,而不是仅仅将每个修订版与之前的修订版进行比较修改