如何找到添加某些文件的git修订版?

时间:2013-08-14 13:39:56

标签: git

背景

我们从另一个项目向我们的git存储库添加了一些文件。然后,我们修补了这些文件(大约六个月),以支持我们的应用程序实现的特殊性。

现在,我需要将这些更改传播到最初从中获取文件的项目中。

我试图获取一个修改过的文件列表,在我们在添加它们的修订版和dev分支的头部之间:

问题是我找不到将这些文件添加到项目中的修订版。

我尝试使用先前的修订版号(一个足够,以便在我们的更改开始时)获取差异:

$ git diff c5362a135d..dev_branch -- subdir/where/the/files/are/at

(在此示例中,c5362a135d是之前的修订版添加了这些文件)。

如果我在c5362a135d和当前的HEAD之间进行区分,我看不到差异(只有完整的文件列表):

diff --git a/dir/subdir/file.h b/dir/subdir/file.h
new file mode 100644
index 0000000..387b33b
--- /dev/null
+++ b/dir/subdir/file.h

....

问题:

如何找到将某个文件/目录添加到存储库的git修订版?

(因此文件的当前版本不会与/dev/null区分开来,而是与最初添加的文件区分开来。

环境

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04.4 LTS"

$ $ git --version
git version 1.7.0.4

1 个答案:

答案 0 :(得分:1)

对于一个文件,如果执行git log <filename>,则只有在将文件添加到存储库时才能获得该文件的提交。不确定您拥有多少个文件,或者它们是否同时添加,但这些文件可以满足您的需求。

更新:

如果文件已被重命名或移动,请使用@Treze的每个评论--follow选项,同样根据此答案(https://stackoverflow.com/a/11533206/498699),您可以使用--oneline和尾部获取最后一次提交:

git log --follow --oneline <filename> | tail -n 1