2010-07-14 53 views
3

我有两个分支,我正在将branch1合并到branch2中,但没有快进。如何显示与Git中没有快进合并的文件?

合并后,我运行命令'git show',我只收到提交的消息(这是从不快进的合并),没有更改的列表文件。

如何获取合并中更改的列表文件?

解决:

当在合并后BRANCH2,我用了以下内容:

git diff HEAD~ 

返回了正确的结果。

+0

我认为以下两个答案都表明很难准确解释你所要求的内容 - 它可能有助于添加一个ASCII艺术提交图,显示你想查看哪些提交之间的差异。 – 2010-07-15 07:52:38

+1

不要像上面那样添加求解,而要为自己的问题添加一个答案。你不会得到有趣的接受点,但至少人们会知道你的意图和你找到的答案。 – 2010-08-27 14:35:23

回答

1

当branch2合并后,我使用以下内容:

git diff HEAD~ 

返回正确的结果。

1

你试过git whatchanged命令吗? (未测试):

git whatchanged --oneline 

git whatchanged --oneline ..HEAD^ 
git whatchanged --oneline ..HEAD^2 

--oneline 

这是一起用于 “--pretty=oneline --abbrev-commit” 的简写。

我需要的是看到branch1中合并到branch2的所有文件。

branch2这里可以用HEAD^2表示,HEAD的第二个父母。

至于“只是文件列表”:

git diff --name-status ..HEAD^2 

应该给你只是一个与他们相关联的状态文件的列表。

+0

这给了我所有提交的更改,与'git log'相同。我需要的是查看分支1中合并到分支2的所有文件。 – chafnan 2010-07-14 11:15:46

+1

@chafnan:你有没有用'HEAD^2'(它应该代表'branch2')试试''--oneline''。看到我更新的答案。 – VonC 2010-07-14 14:21:42

0

合并后,检查git reflog的输出,该输出用于跟踪分支提示的位置。第一行应该是你的合并提交,第二行应该是合并之前的branch2。如果看起来正确的,你可以从输出先前提交的时候可以被称为[email protected]{1}的第二列中看到,所以看到哪些文件被合并改变了,你可以这样做:

git diff --stat [email protected]{1} 
+0

让我更接近,但branch1有多个提交。如何获得所有提交的差异? – chafnan 2010-07-14 15:53:13

+0

所以你希望看到'branch1'和'branch2'中的所有文件从发生分歧到合并时都发生了变化?如果是这样,并假设您的分支仍然在合并提交,我想你可以用'git diff --stat $(git merge-base HEAD^1 HEAD^2) – 2010-07-15 07:23:37