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

如何使用git reset --soft保留Git分支合并工作流?

问题解决方案

修复分支合并记录被破坏的问题

你当前使用git reset --soft "HEAD~2"会回退到两个提交之前,把PR提交和更早的分支合并记录都纳入回退范围,这才导致代表分支合并的工作流斜线被破坏。正确的做法是只回退到PR提交的节点(即自动版本更新提交的前一个节点),操作代码调整如下:

- name: 合并版本更新变更到PR提交
  run: |
    git config user.name github-actions
    git config user.email github-actions@github.com
    # 仅回退到PR提交节点,保留版本更新的变更内容
    git reset --soft HEAD~1
    # 后续处理提交信息,参考下方合并提交信息的方法
    git commit --amend --no-edit --message="Version ${{ env.MYVERSION }}"
    git push --force

这样只会合并最近的两个目标提交(PR提交和自动版本更新提交),不会触动更早的分支合并记录,也就不会破坏工作流的合并斜线。

合并两个提交的信息

如果需要同时保留PR的原始提交信息和版本更新的内容,有两种实用方式:

方式1:拼接原始PR信息与版本信息

直接读取PR提交的原始信息,再和版本信息拼接后提交:

# 提取PR提交的原始信息
original_pr_msg=$(git log --format=%B -n1 HEAD~1)
# 合并信息并提交
git commit --amend --message="$original_pr_msg

Version ${{ env.MYVERSION }}"

方式2:保留原始PR信息,追加版本备注

用--no-edit参数保留PR的原始提交信息,同时追加版本更新内容:

git commit --amend --no-edit --message="Version ${{ env.MYVERSION }}"

最终提交信息会保留PR的原始内容,末尾自动添加版本更新的备注行。

额外注意

  • 执行git push --force前,要确认当前分支只有这两个需要合并的提交,避免误覆盖其他未同步的变更。
  • 如果你的PR提交本身是合并提交(比如从其他分支合并而来),需要把HEAD~1替换为HEAD^1,确保回退到PR合并提交本身,避免回退到错误节点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:25:19