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

如何重构Git分支:调整提交历史修复跨分支合并内容丢失问题

操作前置准备

操作前先完整备份本地仓库目录,避免误操作丢失代码。执行以下命令确保本地和远程代码同步,无未提交变更:

git fetch origin
git status
# 如有未提交的修改,执行git stash暂存,操作完成后可git stash pop恢复

分支重构步骤

1. 重构wp-dev分支(解决合并删STUFF的核心问题)

将wp-dev上从9174d5c开始的所有提交,整体迁移到1a8d0ac节点之后:

git checkout wp-dev
git rebase --onto 1a8d0ac 1886f04 wp-dev
  • 变基过程中如果出现冲突,手动修改冲突文件后执行git add <冲突文件名>,再执行git rebase --continue直到变基完成。
  • 操作完成后wp-dev的提交链变为:1a8d0ac -> 9174d5c -> 0a2c1d7 -> 5439ac8 -> 74e522a,STUFF相关内容会完整保留,后续合并static-dev的改动不会再被删除。

2. 清理static-dev分支的冗余提交

当前static-dev存在重复的A提交和多余的合并记录,直接重置到正确的A节点7890397即可:

git checkout static-dev
git reset --hard 7890397

3. 修复main分支的提交历史

将main分支重置到1a8d0ac节点,和你期望的主线结构对齐,后续可按需合并static-dev的改动:

git checkout main
git reset --hard 1a8d0ac
# 后续如果要把A提交同步到main,执行:git merge static-dev

4. 同步修改到远程仓库

因为修改了提交历史,需要强制推送覆盖远程分支,当前只有你一人操作仓库不会影响其他人:

# --force-with-lease会先检查远程是否有你未拉取的新提交,比直接--force更安全
git push origin main --force-with-lease
git push origin static-dev --force-with-lease
git push origin wp-dev --force-with-lease

后续迭代规范

  • static-dev的改动完成后,可正常合并到main,也可定期合并到wp-dev同步更新,不会再出现内容丢失问题
  • wp-dev的专属改动仅在wp-dev分支提交,需要上线的改动可先合并到static-dev,再同步到main

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 14:06:05