语境:
通常在调查问题时,我会引入调试语句(与解决方案隔离,在他们自己的提交中),然后一旦我有解决方案,我将删除所有这些调试语句。然而,有时,在查看差异或责备时,不清楚在调试中引入了哪些更改以及哪些更改是作为解决方案的一部分。在这种情况下,我想确定,对于任何特定的提交或一组提交,哪些行(如果有)在该提交中发生了更改,并且以后不再更改。这样我可以确定所有调试更改都已正确还原。
通常,我会简单地通过 git 还原提交,但特别是当在解决方案上花费很长时间,在修复和调试之间交替时,可能会有代码更改提交删除在调试中引入的行,这很git revert
重要。
概括:
我想查看存储库中任何文件中的任何行,这些行将标有git blame
. 也就是说,任何被给定提交触及并且此后未更改的行。目前,我的工作流程如下:
git log
#record short hashes of the commits i'm interested in
对于每个哈希:
git show --name-only $hash
#record files affected
对于每个文件:
git blame -- "$file" | grep $hash