可能重复:
View the change history of a file using Git versioning
有时我想逐步浏览特定文件的历史记录。在过去,我使用P4V,这非常快速和直观。
切换到git现在这是一项艰苦的任务。
我搜索了SO,我尝试了一些常用的guis:github,gitk,gitg,git-gui。
这些都消除了手动运行命令的需要,但工作流程与此相同。查看文件历史记录;查看提交;搜索大量不相关文件的差异。这是缓慢而重复的。
所有数据都在回购中,所以我认为这个简单的常见用例没有理由不能简化。
任何人都可以推荐一个可以执行此操作的工具 - 或者使用命令行更有效地执行我想要的操作吗?
感谢您的任何建议。
答案 0 :(得分:139)
您可以使用git log在搜索时显示差异:
git log -p -- path/to/file
答案 1 :(得分:128)
你试过这个:
gitk path/to/file
答案 2 :(得分:46)
git log -p
将为每个选定的提交生成一个补丁(差异)。对于单个文件,请使用git log --follow -p $file
。
如果您正在寻找特定的更改,请在log(n)视图中使用git bisect
到find the change,方法是将提交次数分成两半,直到找到您要查找的内容发生更改为止
如果您知道这是什么,还可以考虑使用git blame
至follow changes to the line回顾历史记录。此命令显示影响某一行的最新修订。你可能不得不回过头几个版本来找到引入某些东西的第一个变化,如果有人随着时间的推移调整它,但这可以给你一个良好的开端。
最后,gitk
作为我点击的任何提交的GUI does show me the patch immediately。
示例:
答案 3 :(得分:10)
对我来说,主要的问题是,你究竟想要找出什么?您是否试图找出该文件中引入了哪些更改?
您可以使用git blame
,它将使用SHA1和更改日期来分配每一行。 git blame
也可以告诉您某个行何时被删除或者如果您对此感兴趣,可以将其移动。
如果您想了解一下,当引入某个错误时,git bisect
是一个非常强大的工具。 git bisect
会对您的历史记录进行二元搜索。您可以使用git bisect start
开始二分,然后git bisect bad
标记存在错误的提交,并git bisect good
标记没有错误的提交。 git会检查两者之间的提交,并询问它是好还是坏。您通常可以在几个步骤中找到错误的提交。
由于我使用了git,我几乎没有发现需要手动浏览补丁历史来查找内容,因为大多数情况下git为我提供了一种实际查找所需信息的方法。
如果你试图少考虑如何做某个工作流程,但更多地考虑你需要什么信息,你可能会有很多工作流程(在我看来)更简单,更快。