Git-查找何时删除方法

std*_*err 3 java git

我正在使用Git对大型Java项目进行版本控制。

是否可能知道在某个类的某个提交中添加或删除了某个方法?

elm*_*art 5

试试 git log 的“pickaxe”选项:

git log -S<your-method-name>
Run Code Online (Sandbox Code Playgroud)

这将为您提供添加或删除字符串的所有提交。
注意 -S 后没有空格。


Atr*_*opo 5

您可以搜索方法的名称,然后找到输入或删除该字符串的所有提交:

git log -c -S'methodName' /path/to/file.java
Run Code Online (Sandbox Code Playgroud)

另一个解决方案是找到该方法存在的最后一个提交:

$ git blame --reverse START_COMMIT.. file.ext
Run Code Online (Sandbox Code Playgroud)

START_COMMIT是一个您肯定知道该方法仍然存在的提交。您将获得一个git blame输出,在其中可以看到该方法存在的最后一次提交,例如:

f590002e (user 2014-01-13 17:27:25 +0000 26)     public void save() {
f590002e (user 2014-01-13 17:27:25 +0000 27)         JPA.em().persist(this);
f590002e (user 2014-01-13 17:27:25 +0000 28)     }
Run Code Online (Sandbox Code Playgroud)