首页 > 解决方案 > 我想查看两个合并提交之间的差异,仅更改第一个合并提交的文件

问题描述

通常,我在 git 中有这种情况

在此处输入图像描述

两个分支都是由 git 自动合并的,但我知道有一些“冲突”的更改,我担心它们是如何解决的,但是,显示任何两个提交的差异会在许多不相关的文件中产生大量更改。

是否可以看到和的合并提交之间的差异,但只有出现在其中的文件受 影响?feat1feat2feat1feat2

标签: gitatlassian-sourcetreegit-diff

解决方案


您想列出两个合并提交修改的文件:

1 - 列出一次提交的更改文件:

git show <SHA> --name-only --pretty=format:

2 - 比较两个合并提交的文件列表并获得交集:

comm -12  <(git show SHA1--name-only --pretty=format: |sort -u) <(git show SHA2--name-only --pretty=format: |sort -u)

3 - 现在您有了文件列表,您可以循环比较所有文件,例如:

for r in `comm -12  <(git show SHA1--name-only --pretty=format: |sort -u) <(git show SHA2--name-only --pretty=format: |sort -u)`; do git difftool SHA1 SHA2 "$r"; done

当然,您必须通过合并提交替换 SHA1 和 SHA2。


推荐阅读