2015-05-18 28 views
1

假设我有文件X,这个文件已存在多年并且已被修改了几次。我可以看到它的日志,还可以请求日志中任何更改的差异。请求从Git中移出的文件的历史差异

现在,此文件已重命名为Y(或已移至其他目录),并且此更改已提交。命令git log Y的输出仅显示条目:最后的重命名提交。但是,我可以通过--follow选项解决此问题:git log --follow Y会向我显示最后一次提交,但还会显示文件发生的所有更改,但仍旧有旧名称X

但是,我不知道如何在该文件中查询有关更改的Git。当然,我可以查询对整个存储库进行提交的更改,然后只读取与该存储库相关的那一部分。但有没有一些选项git diff这将为我做?

[这是非常重要的,因为我切换到使用Maven,因此几乎所有的源文件被搬来搬去,有时甚至不止一次使用的应用程序。]

+1

你有没有尝试过的git登录-p -

+0

@MudassirRazvi:这肯定是有益的,如果合并用'--follow',但我仍然想要一种方法来分别获取diff。 – doublep

回答

0

您可以将--stat添加到找出什么是SHA-1的更名提交

git log --follow --stat b.txt

例如:

... 
... 
53f0655 ggg 
a.txt => b.txt | 0 
1 file changed, 0 insertions(+), 0 deletions(-) 
69a4b0a ggg 
a.txt | 2 +- 
1 file changed, 1 insertion(+), 1 deletion(-) 
a67b02d ggg 
a.txt | 2 +- 
1 file changed, 1 insertion(+), 1 deletion(-) 
b1168f7 ggg 
a.txt | 1 + 
1 file changed, 1 insertion(+) 

正如你所看到的最后一次提交的是重命名,然后用它作为你的日志范围:

git log --follow --stat --oneline 53f0655...HEAD b.txt

+0

你可以总是使用'git bisect --run'来找出提交ID,如果有太多的提交手动执行 – CodeWizard

+0

但问题是如何得到该提交的差异,仅针对有问题的文件(for它的旧名称,当然)。 – doublep

+0

再次嗨。 一旦你有所需的提交(手工查找或使用git bisect),你可以查看这个提交的特定差异(补丁)'git format-patch -1 ' – CodeWizard