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