在git中浏览文件的历史logging; 类似于p4v timelapse
我正在寻找一个工具来帮助探查文件的历史。 具体来说,我想查看文件的全部内容,但是能够及时前进和后退。 额外的欢乐装饰品指示差异从以前的rev或某些其他指定的rev。
目前我使用git blame
,可以看到哪些更改会影响每个当前行。 然后我必须重新启动该文件的查看器与一些特定的提交。 这是劳动密集型的,如果一个工具已经自动化,我很乐意使用它!
Perforce的timelapse视图是迄今为止我见过的最好的工具。
git gui blame是一个选项,虽然它不是很好。
来自Ansible的gc_storage示例:
git gui blame --line=155 library/cloud/gc_storage
右键单击一行并select“归咎家长提交”以及时返回,使用左上angular的查看历史logging箭头返回到最近的更改。
gitk -- filename
应该做你想要的,如果你踢中间的上下文的行,并上下滚动的修订。
这里是我用Java编写的Git Time-Lapse View工具:
Tig是git的文本模式界面,提供了一些可以提供以下function的责任视图:
- 及时倒退到给定行的提交( b键)。
- 向后退到给定行( ,键)的父提交。
- 及时回到你以前的观点( <关键)。
它在步入父提交时不保留查看位置(这似乎是在使用该行的提交时)。
如果你使用vim,那么git-time-lapse插件也可以帮你。
它允许你浏览一个文件的历史logging,以vimdiff格式显示每个提交,并在下面的单独的vsplit中提交消息。
如果你愿意的话,你也可以使用像github这样的东西 – 它对于一个特定文件的历史视图向你展示了每个文件被编辑的时间和由谁提供的概要,并给你提供了方便的链接来查看该提交的文件差异,该提交的当前版本的文件等
我有一个Perl脚本(太大而且太笼统,不能作为这个问题的答案),它抓取了git中指定文件的每个版本的副本。 (它也适用于RCS和CVS)。
编辑:我终于到处释放它在Github上 。
它的核心是这个(伪代码):
- 运行
git log --date=raw -- filename
- search输出
commit
和Date:
行。 - 对于每个commit-id:
- 运行
git show commit-id ./filename > target-filename
- 运行
target-filename是由commit-id,时间戳和/或顺序索引的某种组合构成的。
结果可能是,例如,一堆文件,如:
foo__001.txt foo__002.txt foo__003.txt
其中每个都是来自git仓库的foo.txt
版本。 然后,我可以查看每个文件和/或diff的连续版本。
这不会给你所要求的一切,但这应该是一个好的开始。
如果你使用的是Visual Studio,CodeLineage很好。
https://visualstudiogallery.msdn.microsoft.com/bb3d22aa-29bf-41e1-acc9-92482bee4646
我喜欢Jonathan Aquino的Git Time-Lapse向你显示提交注释,但是CodeLineage是很好的,因为它集成在Visual Studio中,你可以select你正在比较的两个版本,而不是仅仅比较每个版本和它以前的版本。