【问题标题】:Find who & when deleted a line in a function using GIT使用 GIT 在函数中查找谁和何时删除了一行
【发布时间】:2014-12-09 23:05:56
【问题描述】:

我在一个像这样的大型仓库中有一些 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并google了一下,没有找到通用的方法。

【问题讨论】:

  • 你是说这些行出现了很多次,删除了很多次,你无法通过 -G 选项来记录或使用镐搜索?
  • @AndrewC 是的,更糟糕​​的是,我真的不记得究竟需要删除什么,第一个版本有很多 k-v 对,当前版本太少了。我需要弄清楚为什么有些人被设计或错误地删除了。

标签: git git-log git-blame


【解决方案1】:

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

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

startend 应该是提交签名。

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

【讨论】:

    猜你喜欢
    • 2013-09-09
    • 2019-04-19
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 2013-05-10
    • 2020-10-08
    相关资源
    最近更新 更多