1

背景:

我们从另一个项目向我们的 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 修订版?

(因此文件的当前版本不会与 diff /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
4

1 回答 1

1

对于一个文件,如果您这样做git log <filename>,您将只获得该文件的提交,直到该文件添加到存储库时为止。不确定您有多少文件,或者它们是否同时添加,但这应该可以满足您的需求。

更新:

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

git log --follow --oneline <filename> | tail -n 1
于 2013-08-14T13:52:02.413 回答