确定提交是否包含当前版本中保留的更改

时间:2018-07-19 06:32:47

标签: git git-blame

上下文:

通常在调查问题时,我会介绍调试语句(与解决方案隔离,在其自己的提交中),然后一旦有了解决方案,便会删除所有这些调试语句。但是,有时在查看差异或非常规时,不清楚在调试中引入了哪些更改以及哪些是解决方案的一部分。在这种情况下,我想确定对于任何特定的提交或一组提交,哪些行(如果有)在该提交中已更改,以后不再更改。这样,我可以确保所有调试更改都已正确还原。

通常,我会简单地通过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

2 个答案:

答案 0 :(得分:0)

我已经用git blame -- "$file" | grep $hash xargs构建了一个相当复杂的命令,并把grep的命令串在一起,但这似乎有点过头了,我希望有办法做到这一点大部分都委托给git。

这接受一个简短的哈希表作为其参数:

git

但是,如果有任何受影响的行,它不会告诉您它们来自哪个文件。
如果给定完整的散列,它也将找不到受影响的行:需要提供缩写。

答案 1 :(得分:0)

我认为git diff HEAD [Commit before first debug change]应该这样做。

您可以在文本编辑器中查看结果并搜索调试更改。如果发现尚未删除任何内容。