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

Git如何移除其他分支的提交?分支错误创建后的修复方案

解决方法

方法一:使用git rebase --onto(推荐)

这个命令能精准将指定范围的提交从原基准迁移到新基准,完美匹配你的需求:把gib分支中属于你自己的提交,从dave分支基准移到最新的main分支上。

  • 确保本地main分支是最新状态:
    git checkout main
    git pull
    
  • 切换到gib分支:
    git checkout gib
    
  • 执行迁移操作,跳过dave分支的所有提交,仅保留gib新增的提交并挂到main上:
    git rebase --onto main dave
    
  • 若rebase过程中出现冲突,解决冲突后执行:
    git add .
    git rebase --continue
    
    要是想放弃rebase,执行git rebase --abort即可。
  • 强制推送到远程gib分支(因为rebase修改了提交历史,必须强制推送):
    git push -f origin gib
    

完成后,gib分支会基于最新main,且仅包含你自己的提交,dave分支不受任何影响,保持完全独立。

方法二:使用git cherry-pick

如果gib分支只有一个提交,用cherry-pick复制提交到main基准的分支上更直观:

  • 确保main分支最新:
    git checkout main
    git pull
    
  • 基于main创建临时分支:
    git checkout -b gib-temp main
    
  • 查看gib分支的提交历史,找到你自己的提交哈希(用git log gib查看,排除dave分支的提交),假设哈希为abc123,执行复制:
    git cherry-pick abc123
    
  • 解决冲突(若有)后执行:
    git add .
    git cherry-pick --continue
    
  • 用临时分支替换原gib分支:
    git checkout gib
    git reset --hard gib-temp
    
  • 强制推送到远程:
    git push -f origin gib
    
  • 可选:删除临时分支
    git branch -D gib-temp
    

验证结果

执行完操作后,用git log --oneline查看gib分支的提交历史,确认仅保留你的提交且基准为最新main;同时查看dave分支历史,确保其提交未被改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:07:18