f1---f2                 - short term branch "feature1"
          /       \
      h--h--h---h--h1--h2-         - long term branch "hofix"
     /       \   \      \
    /         \   \      \
   m----m------m---m------m--      - long term branch "master"
                   |      |
                 1e1e1e 2f2f2f
我合并了有 2 个提交差异的分支(总共更改了 15 个文件)。并跑:
$ git show --pretty="format:" --name-only 1e1e1e..2f2f2f
我收到了超过 42,000 个从我的项目中更改的文件。为什么?
预期:我将显示 f1、f2、h1、h2 提交的差异
PS 可能是因为“合并分支'origin/0411-hotfix'”提交?
1e1e1e..2f2f2f方法:
2f2f2f1e1e1e(参见“指定范围” gitrevisions)
如果这些 SHA1 引用合并的两个提交,您将拥有:
\n\n    1e1e1e\n      |\nx--x--x\n       \\\n        Z\n       /\ny--y--y\n      |\n    2f2f2f\n这将为您提供所有 \' \' 提交中的所有文件y,这可能会一直到第一个提交,这意味着您将获得所有文件。
但是,由于不需要一定范围的提交(与 相反),您可以尝试,如“如何 \xe2\x80\x9c \xe2\x80\x9d 具有组合差异输出的合并提交”:git diff git showgit show
git diff --name-only 1e1e1e..2f2f2f\n或者简单地使用合并 SHA1 \' Z\',如“列出 git merge commit 中所有修改的文件 - 甚至是快进的”:
git log -m -1 --name-only --pretty="format:" <Merge SHA>\n