git diff唯一合并提交

时间:2011-07-15 22:02:47

标签: git merge diff commit

说我有,

      A topic
     / \
D---E---F master

我可以通过

轻松获得D-E的差异
git diff D..E --name-status

和E-F相同。

提交F是一个合并提交,并说它有冲突。通过修改foo.bar解决了这个问题。 foo.bar被添加了git,然后提交了合并提交。合并冲突得到了解决。

现在foo.bar的更改仅存在于提交F.我如何获得该差异?

有没有办法获得在合并提交中唯一引入的文件差异?

2 个答案:

答案 0 :(得分:7)

合并提交中的

git show将显示不在其任何父项中的更改。例如:

$ echo 123 > file1.txt
$ git add file1.txt
$ git commit -am '123'

$ git checkout -b test
$ echo 1234 > file1.txt
$ git commit -am '1234'

$ git checkout HEAD~ -b test2
$ echo 0123 > file1.txt
$ git commit -am '0123'

$ git merge test
$ echo 01234 > file1.txt
$ git add file1.txt
$ git commit -am 'Merge test'

$ git show
commit f056a1c91d76c8dfce60a03122494dce92c1e161
Merge: 489f1d3 fcfd2bc
Date:   Fri Jul 15 20:30:17 2011 -0500

    Merge test

diff --cc file1.txt
index 40381e2,81c545e..3521a84
--- a/file1.txt
+++ b/file1.txt
@@@ -1,1 -1,1 +1,1 @@@
- 0123
 -1234
++01234

答案 1 :(得分:0)

不确定“合并提交中唯一引入的文件”是什么意思。该文件必须存在之前,否则不会发生冲突。并且“foo.bar的变化仅存在于提交F中”也不完全正确。提交不包含更改。您可以看到foo.bar diff与其他任何内容完全相同:git diff E Fgit diff A F,具体取决于您要关注的分支。