0

我在这样一个巨大的仓库中有一些 ruby​​ 代码

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并用谷歌搜索了一下,没有找到通用的方法。

4

1 回答 1

1

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

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

在哪里start以及end应该是提交签名。

对于每一行,它将显示该行出现的最新提交。然后,您可以派生下一个提交以了解发生了什么。

于 2014-10-15T01:31:55.323 回答