显示文件的历史记录?

Chr*_*ris 144 git version-control github git-history

可能重复:
使用Git版本控制查看文件的更改历史记录

有时我想逐步浏览特定文件的历史记录.在过去,我使用P4V,这非常快速和直观.

  1. 右键单击文件并选择历史记录.
  2. 通过日期滚动,看到的究竟是什么改变一个很好的差异在文件日期.简单.

切换到git这是一项艰巨的任务.

  1. "git log filename"
  2. 查看历史记录并选择日期,复制哈希值
  3. "git diff hash"
  4. 滚动浏览差异,查看我感兴趣的文件中更改的内容.
  5. 不,不是这样,让我们​​尝试不同的日期 - 回到第2步,冲洗并重复.

我搜索了SO,我尝试了一些常用的guis:github,gitk,gitg,git-gui.

这些都消除了手动运行命令的需要,但工作流程与此相同.查看文件历史记录; 查看提交; 搜索大量不相关文件的差异.这是缓慢而重复的.

所有数据都在repo中,所以我认为这个简单的常见用例没有理由不能简化.

任何人都可以推荐一个这样做的工具 - 或者更有效的方式来利用命令行来做我想要的事情?

谢谢你的任何建议.

ral*_*nja 150

您可以使用git log在搜索时显示差异:

git log -p -- path/to/file
Run Code Online (Sandbox Code Playgroud)

  • 启用颜色绝对有帮助.然而,该命令似乎是`git config --global color.ui true`(在配置之前没有双破折号).至少那是使用git 1.9.1版本对我有用的东西 (6认同)
  • 过了一会儿你会喜欢控制台差异,只需启用颜色 (2认同)
  • 我同意.git --config --global color.ui true (2认同)
  • 您还可以将差异通过管道传输到 Sublime 之类的文本编辑器中,以获得更好的颜色、搜索功能和整体更好的工作体验:`git log -p -- path/to/file | 子` (2认同)

Pie*_*age 134

你试过这个:

gitk path/to/file
Run Code Online (Sandbox Code Playgroud)

  • 这对我不起作用 - 我只是得到一个空白的屏幕,其中包含"No commits selected". (4认同)
  • 它应该向您显示路径/到/文件的 gitk 界面,包括提交和差异,而不仅仅是最后一次提交。 (2认同)
  • 实际上,看起来这正是我所需要的 - 整个时间轴都是围绕path/to/file. (2认同)

Jef*_*and 47

git log -p将为每个选定的提交生成一个补丁(差异).对于单个文件,请使用git log --follow -p $file.

如果您正在寻找特定的更改,请使用通过将提交数量分成两半git bisect查找 log(n)视图中的更改,直到找到您要查找的内容发生更改为止.

也可以考虑使用回顾历史git blame,以遵循更改线路,如果你知道那是什么问题.此命令显示影响某一行的最新修订.你可能不得不回过头几个版本来找到引入某些东西的第一个变化,如果有人随着时间的推移调整它,但这可以给你一个良好的开端.

最后,gitk因为GUI 确实会立即显示我点击的任何提交的补丁.

在此输入图像描述:


LiK*_*Kao 11

对我来说,主要的问题是,你究竟想要找出什么?您是否试图找出该文件中引入了哪些更改?

您可以使用git blame它,它将使用SHA1和更改日期来分配每一行.git blame如果您对此感兴趣,也可以告诉您某条线何时被删除或移动的位置.

如果你试图找出,当引入某个bug时,它git bisect是一个非常强大的工具.git bisect将对您的历史记录进行二进制搜索.您可以使用git bisect start开始二分,然后git bisect bad标记存在错误git bisect good的提交,并标记没有错误的提交.git会检查两者之间的提交,并询问它是好还是坏.您通常可以在几个步骤中找到错误的提交.

由于我使用了git,我几乎没有发现需要手动浏览补丁历史来查找内容,因为大多数情况下git为我提供了一种实际查找所需信息的方法.

如果你试图想象的那么怎么做了一定的工作流程,但多在你所需要的信息,你可能会很多工作流,(在我看来)是更简单,更快.