找谁和谁当使用GIT删除函数中的一行时

时间:2014-10-15 01:15:02

标签: git git-log git-blame

我在像这样的巨大回购中有一些红宝石代码

def my_func params
  {
    :k1 => 1,
    :k2 => 2,
    :k3 => 3,
    :k4 => 4,
    :k5 => 5,
    :k6 => 6
  }
end

不知何故,很少有键值对随着时间的推移而被删除。我想git blame这样做了,但是键值对很常见,grep会导致太多的误报。那么有没有办法在所有提交中查看 功能的更改

我试过像git log -L /^\s+def my_func/,/^\s+def/ src/to/file.rb这样的东西,没用。像SourceTree这样的GUI工具有“记录这个文件”,它只显示差异,所以我无法分辨变化所属的功能。我还搜索了stackoverflow并搜索了一下,没有找到通用的方法。

1 个答案:

答案 0 :(得分:1)

在这种情况下,你可以执行“反向指责”。您只需询问“新”与旧文件的“差异”,因此删除会成为添加,反之亦然。

git blame --reverse start..end file.ext

startend应该提交签名。

对于每一行,它会显示最新提交,出现行。然后,您可以派生下一次提交以找出发生的事情。