在执行“简单的”合并(没有冲突的合并)之后,git show
通常只显示如下内容
commit 0e1329e551a5700614a2a34d8101e92fd9f2cad6 (HEAD, master)
Merge: fc17405 ee2de56
Author: Tilman Vogel <email@email>
Date: Tue Feb 22 00:27:17 2011 +0100
Merge branch 'testing' into master
这是因为,对于合并,git show
使用组合的diff格式,该格式省略了与父版本之一一致的文件。
有没有办法让git在组合的diff模式下仍然显示所有的差异?
执行git show -m
将显示差异(分别使用新版本和所有父版本之间的成对差异),但我更喜欢在相应的列中使用+/-标记的差异,如在组合模式中。
发布于 2011-09-07 22:27:29
查看提交消息:
commit 0e1329e551a5700614a2a34d8101e92fd9f2cad6 (HEAD, master)
Merge: fc17405 ee2de56
Author: Tilman Vogel <email@email>
Date: Tue Feb 22 00:27:17 2011 +0100
Merge branch 'testing' into master
请注意这一行:
Merge: fc17405 ee2de56
获取这两个提交ids并反转它们。所以为了得到你想要的差异,你应该这样做:
git diff ee2de56...fc17405
要仅显示已更改文件的名称,请执行以下操作:
git diff --name-only ee2de56..fc17405
要解压缩它们,可以将以下内容添加到gitconfig中:
exportfiles = !sh -c 'git diff $0 --name-only | "while read files; do mkdir -p \"$1/$(dirname $files)\"; cp -vf $files $1/$(dirname $files); done"'
然后通过执行以下操作来使用它:
git exportfiles ee2de56..fc17405 /c/temp/myproject
发布于 2012-12-10 15:43:27
在合并之前,您可以创建HEAD设置为one commit的分支。然后,您可以执行以下操作:
git merge --squash testing
这将合并,但不会提交。然后:
git diff
发布于 2019-05-14 03:56:17
如果您坐在合并提交位置,则会显示差异:
git diff HEAD~1..HEAD
如果您不在合并提交,那么只需将HEAD替换为合并提交。这种方法似乎是最简单、最直观的。
https://stackoverflow.com/questions/5072693
复制相似问题