背景
我们从另一个项目向我们的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
答案 0 :(得分:1)
对于一个文件,如果执行git log <filename>
,则只有在将文件添加到存储库时才能获得该文件的提交。不确定您拥有多少个文件,或者它们是否同时添加,但这些文件可以满足您的需求。
更新:
如果文件已被重命名或移动,请使用@Treze的每个评论--follow
选项,同样根据此答案(https://stackoverflow.com/a/11533206/498699),您可以使用--oneline
和尾部获取最后一次提交:
git log --follow --oneline <filename> | tail -n 1