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

Git分支历史清理:移除他人提交,保留自有提交并推送

仅保留自身提交的解决步骤

方法一:交互式变基(推荐)

  1. 更新本地master分支到最新状态:
git checkout master && git pull
  1. 切回你的my_branch分支:
git checkout my_branch
  1. 启动交互式变基,基于最新的master分支:
git rebase -i master

此时会打开一个文本编辑器,里面列出了当前分支与master分叉后的所有提交(包括他人的5个提交和你的2个提交)。
4. 编辑提交列表:

  • 保留你自己两次提交前的pick关键字(如果想把两次提交合并成一个,可将第二个提交的pick改为squash或fixup)
  • 将他人提交前的pick替换为drop,或者直接删除这些提交对应的行
  1. 保存并退出编辑器,Git会自动完成变基操作,此时你的分支历史就只包含自己的两次提交了。
  2. 由于远程分支历史已被修改,需要强制推送更新:
git push -f origin my_branch

方法二:重置分支后重新移植提交

  1. 先备份当前分支,防止操作失误丢失内容:
git checkout my_branch && git branch my_branch_backup
  1. 更新本地master分支:
git checkout master && git pull
  1. 基于最新的master创建新分支:
git checkout -b my_branch_temp master
  1. 把你自己的两次提交移植到新分支:
    先通过git log my_branch_backup找到自己两次提交的哈希值,然后执行:
git cherry-pick <第一次提交哈希> <第二次提交哈希>

如果遇到冲突,解决冲突后执行git cherry-pick --continue即可。
5. 更新远程分支:
先删除旧的远程分支,再推送新分支并命名为原分支名:

git push origin --delete my_branch
git push origin my_branch_temp:my_branch

之后可以整理本地分支:

git branch -D my_branch
git branch -m my_branch_temp my_branch

注意事项

  • 强制推送会覆盖远程分支的历史记录,如果有其他同事在my_branch上协作,务必提前沟通,避免丢失他人的修改内容。
  • 使用cherry-pick时,一定要确认选中的是你自己的提交哈希,不要误选他人的提交。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:45:27