我有两个提交,其中一个是另一个的祖先.(它们恰好是分支的起点和终点.我认为不重要,但如果有的话,我会把它包括在内).
我希望看到两个提交之间的差异,但不包括在两次提交之间进行的合并提交(即,具有多个父级的所有提交)期间所做的更改.(基本上,我想要对分支进行任何"真正的"提交,不包括合并.)
这可能吗?如果是这样,你如何做到这一点?
如果有必要,假设在合并提交期间没有解决冲突...但是可以优雅地处理它们的解决方案的奖励积分.
你的问题有点模棱两可,但我想你想要这个.
git log --no-merges -p branch-start..branch-end
Run Code Online (Sandbox Code Playgroud)
如果您的合并全部来自同一个分支(例如master)或全部包含在另一个分支中,您可以使用此问题中的解决方案。
假设您有一棵如下所示的树:
\n\n x---y-+-z-+-branch\n / / /\n---a---b---c-+-d-+-e---master\nRun Code Online (Sandbox Code Playgroud)\n\n您想要比较的两个提交是b和branch。然后,不要直接比较两个提交,而是运行
git diff master...branch\nRun Code Online (Sandbox Code Playgroud)\n\n将显示分支 ( x,y,z) 上所做的所有更改,不包括master(c,d,e合并) 上的所有更改。请注意,这也会忽略在 master 上完成但尚未在分支中的任何更改。
来自文档:
\n\n\n\ngit diff [--选项] 提交...提交 [--] [\xe2\x80\xa6\xe2\x80\x8b]
\n\n此形式用于查看包含第二次提交的分支上的更改,从两个提交的共同祖先开始。“git diff A...B”相当于“git diff $(git-merge-base\n AB) B”。
\n