如何找到添加了某些文件的git版本?

如何找到添加了某些文件的git版本?,git,Git,背景: 我们从另一个项目向git存储库添加了一些文件。然后,我们修补了这些文件(大约六个月的时间),以支持应用程序实现的特殊性 现在,我需要将这些更改传播到最初获取文件的项目中 我试图得到一个修改过的文件列表,在我们添加它们的版本和开发分支的负责人之间: 问题是我找不到将这些文件添加到项目中的版本 我尝试使用之前的修订号(一个足够旧的版本号,可以在我们的更改开始时使用)获取差异: (在本例中,c5362a135d是添加这些文件之前的修订版) 如果在c5362a135d和当前磁头之间存在差异,则无

背景:

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

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

我试图得到一个修改过的文件列表,在我们添加它们的版本和开发分支的负责人之间:

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

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

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

如果在c5362a135d和当前磁头之间存在差异,则无法看到差异(仅完整文件列表):

问题:

如何找到将某些文件/目录添加到存储库中的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

对于一个文件,如果执行
git log
,则将仅获得该文件在添加到存储库之前的提交。不确定您有多少个文件,或者是否同时添加了所有文件,但这应该可以满足您的需要

更新:

如果文件将被重命名或移动,请在@Treze的每个注释中使用
--follow
选项,也可以根据此答案()使用
--oneline
和tail获得最后一次提交:

git log --follow --oneline <filename> | tail -n 1
git日志——follow-oneline | tail-n1

对于一个文件,如果执行
git log
操作,则在将文件添加到存储库之前,您将只获得该文件的提交。不确定您有多少个文件,或者是否同时添加了所有文件,但这应该可以满足您的需要

更新:

如果文件将被重命名或移动,请在@Treze的每个注释中使用
--follow
选项,也可以根据此答案()使用
--oneline
和tail获得最后一次提交:

git log --follow --oneline <filename> | tail -n 1
git日志——follow-oneline | tail-n1

我有大约180个文件要处理。我将考虑为此编写一个shell脚本。这似乎对我不起作用。它似乎不包括实际添加文件的提交
git-dull
显示要触摸每行的最新版本。查看我的一些项目,我得到的
git bull
结果比
git日志
输出中显示的最早的提交要早。文件是否重命名或路径是否更改?这会让历史变得难以理解。最后一次提交将在文件重命名时进行。因此,以前的提交是从文件处于以前的命名状态时开始的。您还可以尝试选项--follow继续列出文件重命名后的历史记录。我有大约180个文件要处理。我将考虑为此编写一个shell脚本。这似乎对我不起作用。它似乎不包括实际添加文件的提交
git-dull
显示要触摸每行的最新版本。查看我的一些项目,我得到的
git bull
结果比
git日志
输出中显示的最早的提交要早。文件是否重命名或路径是否更改?这会让历史变得难以理解。最后一次提交将在文件重命名时进行。因此,以前的提交是从文件处于以前的命名状态时开始的。您还可以尝试选项--follow继续列出文件重命名后的历史记录。相关:相关:
git log --follow --oneline <filename> | tail -n 1