Git blame忽略特定提交

9
我使用git blame命令来查看特定代码行是在哪个提交中添加的,但有时会遇到同样的问题:有人进行了一些代码格式化或更改了函数接口并更新了所有客户端代码。最终,git blame只显示了该特定代码行上的最后一次提交。如何忽略此提交并查看其之前发生了什么?
当然,我可以在格式编辑提交之前检出提交并再次查看blame,但这可能在庞大的项目上花费很长时间并且不太适当。

2
也许 https://blog.andrewray.me/a-better-git-blame 可以帮助。 - Michiel Leegwater
2
https://coderwall.com/p/x8xbnq/git-don-t-blame-people-for-changing-whitespaces-or-moving-code 可能会更有帮助。 - Michiel Leegwater
1个回答

5

我认为你正在寻找排除空格的-w选项。根据手册:

忽略空格以便比较父版本和子版本,找到行来自何处。

移动的代码也可以被排除。请查看-M和-C选项。请参见https://git-scm.com/docs/git-blame


Michiel Leegwater,谢谢!我尝试了带有额外选项-M和-w的命令,它在某种程度上对我有所帮助。我运行了git blame -wM -L 8810,+5 fileName.cpp,然后只运行了git blame -L 8810,+5 fileName.cpp,看到了不同之处。它有效地工作了。 - Malov Vladimir
但我仍然有一个链接问题。例如,有人已经替换了所有的Log :: Info函数调用为LOG_INFO。在此之后,我在每行代码中看到这个提交并且无法忽略,以查看添加原始日志调用的人。 - Malov Vladimir
1
似乎 git hyper blame 可以为您解决这个问题。https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/git-hyper-blame.html --incremental 选项也可以提供结果,但可能更难阅读。 - Michiel Leegwater
3
如果您喜欢使用Git Hyper Blame,那么您会很高兴知道Git 2.23推出了git blame --ignore-rev命令,它类似但可能更加强大。 - Michael Platings

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接