我在像这样的巨大回购中有一些红宝石代码
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并搜索了一下,没有找到通用的方法。
答案 0 :(得分:1)
在这种情况下,你可以执行“反向指责”。您只需询问“新”与旧文件的“差异”,因此删除会成为添加,反之亦然。
git blame --reverse start..end file.ext
start
和end
应该提交签名。
对于每一行,它会显示最新提交,出现行。然后,您可以派生下一次提交以找出发生的事情。