Git – 显示文件的历史?
可能重复:
使用Git版本化来查看文件的更改历史logging
有时我想要浏览一个特定文件的历史。 在过去,我使用了P4V,这非常快速直观。
- 右键单击文件并select历史logging。
- 滚动浏览date,并查看该date中该文件中更改的内容。 简单。
切换到git现在是一个艰巨的任务。
- “git日志文件名”
- 看历史,select一个date,复制散列
- “git diff散列”
- 在我感兴趣的文件中更改的内容滚动diff。
- 不,不是,那不是,让我们尝试一个不同的date – 回到第2步,冲洗并重复。
我search过,我已经尝试了几个常用的guis:github,gitk,gitg,git-gui。
这些都不需要手动运行命令,但工作stream程与此相同。 查看文件的历史logging; 查看提交; 通过比较大量无关文件来search。 这是缓慢和重复的。
所有的数据都在回购,所以我没有理由这个简单的常见用例不能更精简。
任何人都可以推荐一个工具,这样做 – 或者更有效的方式来利用命令行来做我想要的?
感谢您的任何build议。
你有没有试过这个:
gitk path/to/file
您可以使用git log在search时显示差异:
git log -p -- path/to/file
git log -p
会为每个提交的选项生成一个补丁(diff)。 对于单个文件,使用git log --follow -p $file
。
如果你正在寻找一个特定的变化,使用git bisect
来查找 log(n)视图中的变化 ,方法是将提交数量分成一半,直到find你要查找的地方为止。
如果你知道这是什么,也可以考虑回顾一下使用git blame
历史。 此命令显示影响某一行的最新修订。 你可能不得不回头几个版本,以find第一个改变的地方,如果有人调整了一些东西,但这可以给你一个好的开始。
最后,作为一个GUI的gitk
会立即向我显示补丁 ,我点击任何提交。
例 :
我的主要问题是,你究竟在试图找出什么? 你是否想知道,当那个文件中引入了一些变化的时候?
你可以使用git blame
来做这件事,它会在每一行改变一个SHA1和一个date。 git blame
也可以告诉你什么时候某行被删除,或者如果你感兴趣的话,它会被移到哪里。
如果你想git bisect
,当一个bug被引入时, git bisect
是一个非常强大的工具。 git bisect
会对您的历史进行二进制search。 你可以使用git bisect start
来开始平分,然后用git bisect bad
来标记错误所在的提交,并且用git bisect good
来标记没有错误的提交。 git会检查两者之间的一个提交,并问你是否好或坏。 您通常可以在几个步骤内find错误的提交。
由于我使用过git,所以几乎没有发现需要手动查看补丁历史logging来查找某些内容,因为大多数情况下,git为我提供了一种实际查找所需信息的方法。
如果你不想less做如何做一个工作stream程,而是多想你需要什么信息,你可能会有很多工作stream程(在我看来)更简单和更快。