2

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.

这个提交只是关于复制代码。我仍然不知道这段代码是谁写的。

我可以列出代码更改历史记录或类似内容吗?

4

3 回答 3

4

看看 git 的力量 :)

git blame -M -C -C -C -w

来自git help blame

-C

除了 -M 之外,检测从在同一提交中修改的其他文件移动或复制的行。当您重新组织程序并跨文件移动代码时,这很有用。当此选项被给出两次时,该命令还会在创建文件的提交中查找其他文件的副本。当此选项被给出 3 次时,该命令还会在任何提交中查找来自其他文件的副本。

于 2013-02-27T05:51:06.360 回答
0

似乎没有什么好办法,因为您只是从另一个地方复制文件并提交它。

如果你知道这些类,你可以使用 git commit --author authorname

将帮助您打印所有相关的提交。

兄弟,蒂姆

于 2013-02-27T04:34:51.333 回答
0

如果要显示对单个文件的更改,并查看文件名更改,请执行以下操作:

git log --stat --follow -- <filename>

现在要从前一点责备文件,您必须指定可能不再存在的旧文件名。

git blame <hash_before_move> -- <old_file_name>
于 2013-02-28T07:09:32.133 回答