Git – 显示文件的历史?

可能重复:
使用Git版本化来查看文件的更改历史logging

有时我想要浏览一个特定文件的历史。 在过去,我使用了P4V,这非常快速直观。

  1. 右键单击文件并select历史logging。
  2. 滚动浏览date,并查看该date中文件中更改的内容。 简单。

切换到git现在是一个艰巨的任务。

  1. “git日志文件名”
  2. 看历史,select一个date,复制散列
  3. “git diff散列”
  4. 在我感兴趣的文件中更改的内容滚动diff。
  5. 不,不是,那不是,让我们尝试一个不同的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程(在我看来)更简单和更快。