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

GitHub Rebase & Merge生成新提交哈希,合并时如何保留原提交哈希?

解决方案

根本原因

你遇到的哈希变更问题是GitHub的Rebase & Merge机制导致的:该操作会强制将PR分支的所有提交在目标分支上重新生成一遍,即使你的promote分支已经可以直接快进合并到staging,也会因为提交元数据(父节点、生成时间等)变更产生新的哈希值。


可选实现方案

方案1:开启仓库快进合并选项(适配PR合并流程)

你可以在仓库配置中开启快进合并能力,走PR页面点击合并的流程也能保留原有提交哈希:

  1. 进入仓库的Settings->Pull Requests配置页
  2. 在合并按钮配置区域,勾选Allow fast-forward merges选项
  3. 配置完成后,当PR的源分支(promote)和目标分支(staging)处于可直接快进的状态时,PR页面会出现Fast-forward merge的合并选项
  4. 选择该选项合并,不会生成额外提交,也不会修改原有提交的哈希值

方案2:本地快进合并后推送(无需修改仓库配置)

如果不想修改仓库全局配置,可以在PR评审通过后,本地执行操作完成合并,PR的评审记录仍会保留:

# 切换到本地staging分支,拉取最新远端代码
git checkout staging
git pull origin staging

# 执行快进合并,确保没有额外合并提交生成
git merge --ff-only origin/promote

# 推送合并后的staging到远端
git push origin staging

操作完成后手动关闭对应的PR即可,所有提交的原有哈希会完全保留。


验证

合并完成后执行git log --pretty=oneline staging,可以看到mod1、mod2、mod3的提交哈希和master分支上的原始哈希完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:57:03