git blame
可以用来找出修改过的提交,但我遇到的情况是整个文件都是从我无法分辨的地方复制的。
$ git blame a.c
c59f772b (a@google.com 2011-08-25 01:07:44 +0000 1) #include <stdio.h>
c59f772b (a@google.com 2011-08-25 01:07:44 +0000 2)
c59f772b (a@google.com 2011-08-25 01:07:44 +0000 3) int main(int argc, char **argv) {
c59f772b (a@google.com 2011-08-25 01:07:44 +0000 4) void *handle;
c59f772b (a@google.com 2011-08-25 01:07:44 +0000 5) double (*cosine)(double);
...
$ git log c59f772b
commit c59f772bc273e65985236ba665f7a88492a33235
Author: a@google.com
Date: Thu Aug 25 01:07:44 2011 +0000
Cloning a bunch of stuff from the another repository
No changes, as is.
此提交只是复制代码。我仍然不知道哪个以及谁实际编写了这段代码。
我可以列出代码更改历史或类似内容吗?
答案 0 :(得分:4)
了解git的力量:)
git blame -M -C -C -C -w
来自git help blame
:
-C
除了-M之外,检测从同一提交中修改的其他文件移动或复制的行。这对你很有用 重新组织您的程序并跨文件移动代码。当这个 选项被给出两次,该命令另外查找副本 创建文件的提交中的其他文件。当这个选项是 给定三次,该命令另外查找来自的副本 任何提交中的其他文件。
答案 1 :(得分:0)
似乎没有好办法,因为你只是从另一个地方复制文件并提交它。
如果你知道那些类,你可以使用git commit --author authorname
将帮助您打印所有相关提交。
BR, 添
答案 2 :(得分:0)
如果要显示对单个文件的更改,并查看文件名更改,请执行以下操作:
git log --stat --follow -- <filename>
现在要归咎于前一点的文件,你必须指定可能不再存在的旧文件名。
git blame <hash_before_move> -- <old_file_name>