git diff独特于合并提交的差异

8

假设我有以下内容:

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

我可以通过以下方式轻松获取D-E的差异:
git diff D..E --name-status

同样适用于E-F和E-A。

提交F是一个合并提交,假设它有冲突。这个冲突通过修改foo.bar文件来解决。foo.bar文件被git add,然后合并提交被提交。合并冲突已经被解决。

现在,对于foo.bar的更改仅存在于提交F中。如何获取该差异?

是否有一种方法可以获取仅在合并提交中引入的文件的差异?

2个回答

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

0

不确定“在合并提交中唯一引入的文件”确切意味着什么。该文件必须存在,否则就不会有冲突。而且,“foo.bar的更改仅存在于提交F中”也不完全正确。提交不包含更改。您可以像查看其他任何差异一样查看foo.bar差异:git diff E Fgit diff A F,具体取决于您想要跟随哪个分支。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接