通常在调查问题时,我会介绍调试语句(与解决方案隔离,在其自己的提交中),然后一旦有了解决方案,便会删除所有这些调试语句。但是,有时在查看差异或非常规时,不清楚在调试中引入了哪些更改以及哪些是解决方案的一部分。在这种情况下,我想确定对于任何特定的提交或一组提交,哪些行(如果有)在该提交中已更改,以后不再更改。这样,我可以确保所有调试更改都已正确还原。
通常,我会简单地通过git还原提交,但是特别是当在解决方案上花费很长时间时,在固定和调试之间交替进行,很可能会进行代码更改提交,从而删除调试中引入的行,使{{1 }}不平凡。
我想查看存储库中任何文件中的任何行,这些行将用git revert
中一组特定的提交标记。也就是说,给定提交所触及且此后未更改的任何行。目前,我的工作流程如下:
git blame
对于每个哈希:
git log
#record short hashes of the commits i'm interested in
每个文件:
git show --name-only $hash
#record files affected
答案 0 :(得分:0)
我已经用git blame -- "$file" | grep $hash
和xargs
构建了一个相当复杂的命令,并把grep
的命令串在一起,但这似乎有点过头了,我希望有办法做到这一点大部分都委托给git。
这接受一个简短的哈希表作为其参数:
git
但是,如果有任何受影响的行,它不会告诉您它们来自哪个文件。
如果给定完整的散列,它也将找不到受影响的行:需要提供缩写。
答案 1 :(得分:0)
我认为git diff HEAD [Commit before first debug change]
应该这样做。
您可以在文本编辑器中查看结果并搜索调试更改。如果发现尚未删除任何内容。