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

如何查找Git分支的原生/原始提交记录?

查找源自A分支的原始提交记录

操作前先同步全量远程提交数据,保证本地记录和远程一致:
git fetch --all


方法1:补丁对比法(最推荐,准确率最高)

用Git自带的git cherry命令即可,这个命令会按补丁内容而非提交轨迹对比两个分支的差异,自动跳过合并操作带来的关联提交,不会把之前从master合并到A的提交误判为A的原创提交:
执行命令:
git cherry -v --no-merges origin/master origin/A
输出规则:

  • 行首带+的提交,就是最初在A分支上创建的原生开发提交
  • 行首带-的提交,是原本属于master、之前合并到A分支的提交,直接过滤即可

如果需要把结果导出保存,直接加grep过滤重定向就行:
git cherry -v --no-merges origin/master origin/A | grep '^+' > A-branch-original-commits.txt


方法2:合并节点回溯法(适合需要查看完整合并轨迹的场景)

如果你需要连带合并提交一起查看完整历史,可以按两次合并的节点手动筛选:

  1. 先定位A分支上第一次把master合并进来的最早合并提交:
    git log --merges --reverse --oneline origin/A | head -1
    输出结果最前面的哈希值就是目标合并提交,记为<first-merge-master-to-A>
  2. 这个合并提交的第二个父节点,就是当时合并进A的master分支头节点,筛选这个节点之后A分支上的所有提交,就是A的原生提交:
    git log --oneline <first-merge-master-to-A>^2..origin/A
    如果要排除合并提交只看开发提交,加--no-merges参数即可。

注意:不要直接用git log A ^master这类简单的提交差集命令,因为A分支存在先合并master、再被合回master的交叉轨迹,这类命令会因为提交拓扑的变化漏算、错算提交,准确率远低于按补丁匹配的git cherry方案。

内容的提问来源于stack exchange,提问作者mahfuj asif

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:09:21