首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何"git显示“合并提交和组合的差异输出,即使每个更改的文件都与父文件之一一致?

如何"git显示“合并提交和组合的差异输出,即使每个更改的文件都与父文件之一一致?
EN

Stack Overflow用户
提问于 2011-02-22 08:06:21
回答 6查看 119.3K关注 0票数 208

在执行“简单的”合并(没有冲突的合并)之后,git show通常只显示如下内容

代码语言:javascript
复制
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将显示差异(分别使用新版本和所有父版本之间的成对差异),但我更喜欢在相应的列中使用+/-标记的差异,如在组合模式中。

EN

回答 6

Stack Overflow用户

发布于 2011-09-07 22:27:29

查看提交消息:

代码语言:javascript
复制
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

请注意这一行:

代码语言:javascript
复制
Merge: fc17405 ee2de56

获取这两个提交ids并反转它们。所以为了得到你想要的差异,你应该这样做:

代码语言:javascript
复制
git diff ee2de56...fc17405

要仅显示已更改文件的名称,请执行以下操作:

代码语言:javascript
复制
git diff --name-only ee2de56..fc17405

要解压缩它们,可以将以下内容添加到gitconfig中:

代码语言:javascript
复制
exportfiles = !sh -c 'git diff $0 --name-only | "while read files; do mkdir -p \"$1/$(dirname $files)\"; cp -vf $files $1/$(dirname $files); done"'

然后通过执行以下操作来使用它:

代码语言:javascript
复制
git exportfiles ee2de56..fc17405 /c/temp/myproject
票数 277
EN

Stack Overflow用户

发布于 2012-12-10 15:43:27

在合并之前,您可以创建HEAD设置为one commit的分支。然后,您可以执行以下操作:

代码语言:javascript
复制
git merge --squash testing

这将合并,但不会提交。然后:

代码语言:javascript
复制
git diff
票数 12
EN

Stack Overflow用户

发布于 2019-05-14 03:56:17

如果您坐在合并提交位置,则会显示差异:

git diff HEAD~1..HEAD

如果您不在合并提交,那么只需将HEAD替换为合并提交。这种方法似乎是最简单、最直观的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5072693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档