You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看已合并的旧Git分支的变更内容?

查看已合并旧Git分支变更内容的方法

你执行git diff HEAD^ HEAD无结果,大概率是两种情况:要么这个旧分支只有初始提交(HEAD^不存在),要么该分支是通过快进合并并入主分支的,导致旧分支的HEAD和主分支的某个提交完全一致,自然没有差异输出。以下是几种可行的解决办法:

方法1:通过合并提交查看差异(非快进合并场景)

如果合并时生成了专门的合并提交(不是快进),可以这样操作:

  • 先找到合并提交的哈希值:
    git log --merges --oneline | grep "你的旧分支名"
    
    或者直接运行git log --oneline,找到带有Merge branch 'xxx'字样的提交,复制它的哈希值(比如abc123)。
  • 查看该分支带来的所有变更:
    合并提交有两个父节点,^2代表被合并分支的最后一个提交,执行:
    git diff abc123^2 abc123
    
    或者直接用git show abc123,默认会展示合并提交的差异内容。

方法2:处理快进合并场景(无合并提交)

如果是快进合并,没有单独的合并提交,需要找到主分支合并前的状态和旧分支的最后提交对比:

  • 找到旧分支的最后一个提交哈希:
    git log old-branch --oneline -n 1
    
  • 找到主分支合并前的提交:
    用reflog查看主分支的历史操作记录:
    git reflog show main
    
    找到类似def456 HEAD@{5}: merge old-branch: Fast-forward的记录,复制前面的def456(这是主分支合并前的头)。
  • 对比两者差异:
    git diff def456 old-branch-last-commit-hash
    

方法3:通用对比法(不管合并方式)

直接对比旧分支与主分支的公共祖先,得到该分支所有的变更:

git diff $(git merge-base main old-branch) old-branch

git merge-base会找到两个分支最近的公共提交,这条命令能输出旧分支从公共祖先开始所有的修改内容,适用于任何合并场景。

内容的提问来源于stack exchange,提问作者Shaun Peh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:57:40