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

Git如何移除其他分支变更并保留当前新分支的自有提交

问题解决方案

完全可以实现,核心思路是将你在新分支上的自有提交整体迁移到正确的develop基线上,剔除所有从mybranch-1带过来的无关提交,全程不会丢失你写的任何代码,操作步骤如下:

  • 第一步:操作前先做备份,避免误操作丢内容
    先切到你创建的问题新分支,打一个备份分支:

    git checkout 你的新分支名称
    git branch backup-temp
    

    哪怕后续操作出错,只要执行git reset --hard backup-temp就能完全回到操作前的状态。

  • 第二步:定位提交分界点
    你需要找到「mybranch-1的提交结束、你自己的提交开始」的分界提交,有两种简单的找法:

    1. 直接执行命令自动查找:git merge-base mybranch-1 你的新分支名称,命令输出的hash值就是分界点
    2. 执行git log --oneline翻看提交记录,找到你自己写的第一个提交,它的父提交就是分界点
      把这个分界点的hash值记下来,比如是a1b2c3d。
  • 第三步:执行变基操作,迁移自有提交到develop基线
    执行以下命令:

    git rebase --onto develop a1b2c3d
    

    命令逻辑是:把分界点a1b2c3d之后的所有提交(也就是你自己在新分支上写的全部提交),全部重新应用到develop分支的最新节点上,自动跳过所有属于mybranch-1的无关提交。

  • 第四步:处理可能出现的冲突
    如果变基过程中提示代码冲突,正常编辑冲突文件保留正确内容即可,冲突解决后执行:

    git add 你解决完冲突的文件路径
    git rebase --continue
    

    重复这个流程直到rebase执行完成。

  • 第五步:结果校验
    执行git log --oneline查看提交链,确认当前分支的基线是develop的最新提交,后面跟着的全是你自己写的提交,没有mybranch-1带过来的多余内容即可。如果校验没问题,可以删掉之前的备份分支:git branch -D backup-temp。

注意:如果你的这个新分支之前已经推送到远程仓库,变基完成后需要执行git push --force-with-lease推送更新,不要直接用--force强推,--force-with-lease会在远程分支有其他人新增提交时拦截推送,避免覆盖别人的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:36:20