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

如何一次性合并所有分支共享的基础提交并推送到全部分支?

解决方案

要一次性合并底部3个提交并同步所有分支,你可以通过重写根提交历史,再将所有分支迁移到新的历史上,最后批量强制推送。具体步骤如下:

1. 备份所有分支(关键,防止操作失误)

先为所有分支创建本地备份,避免数据丢失:

# 逐个为分支创建备份
git checkout main && git branch main-backup
git checkout project-creation && git branch project-creation-backup
git checkout domain-creation && git branch domain-creation-backup
git checkout menu-creation && git branch menu-creation-backup
git checkout view-creation && git branch view-creation-backup

2. 合并底部3个提交(在main分支操作)

切换到main分支,执行根交互式变基:

git checkout main
git rebase --root -i

在弹出的编辑器中,找到最底部的3个提交:

pick f7e61eb Initial commit
pick b55de24 Initial commit : Added .gitignore
pick 72defa9 (origin/main, main) Basic working project
...

将后两个提交的pick改为squash(保留提交信息)或fixup(丢弃提交信息,仅保留第一个提交的信息):

pick f7e61eb Initial commit
squash b55de24 Initial commit : Added .gitignore
squash 72defa9 Basic working project

保存退出后,编辑合并后的提交信息,完成后会得到一个合并后的根提交,记下它的哈希值(比如abc123)。

3. 将其他分支迁移到新历史上

对每个基于旧根提交的分支,用git rebase --onto把分支的提交移到新的合并提交之后:

# 替换 <新根哈希> 为你刚得到的合并提交哈希,72defa9是原来的旧根提交哈希
git rebase --onto <新根哈希> 72defa9 project-creation
git rebase --onto <新根哈希> 72defa9 domain-creation
git rebase --onto <新根哈希> 72defa9 menu-creation
git rebase --onto <新根哈希> 72defa9 view-creation

如果遇到冲突,解决后执行git rebase --continue即可。由于仅合并根提交,后续提交内容未变,冲突概率极低。

4. 批量强制推送所有分支

因为重写了历史,需要强制推送到远程仓库:

git push origin --force main project-creation domain-creation menu-creation view-creation

注意事项

  • 强制推送会覆盖远程仓库历史,必须确保所有团队成员知晓并同步操作,否则他们的本地分支会与远程冲突。
  • 协作者若有基于旧历史的修改,需执行git fetch origin,再用git rebase origin/<分支名>重新基于新历史,或git reset --hard origin/<分支名>(会丢失本地未推送的修改)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:07:38