如何移除Git分支中特定PR并保留本地变更与后续提交?
移除branch3中PR1的变更并保留本地提交
要在branch3中移除源自development分支的PR1变更,同时保留你在branch3上的所有修改,最直接的方法是通过git rebase --onto改写分支历史,具体步骤如下:
切换到目标分支branch3:
git checkout branch3找到PR1合并到development之前的commit哈希值(记为
<old-dev-commit>):
查看development的提交日志定位该节点:git log --oneline development在日志里找到合并PR1的记录,它的第一个父提交就是PR1合并前的development状态,复制对应的commit哈希即可。
执行rebase操作,将branch3的本地提交移到
<old-dev-commit>之上:git rebase --onto <old-dev-commit> development这个命令会提取branch3中所有在
development分支之后的提交(即你在branch3上的修改),并将它们重新应用到PR1合并前的development节点上,彻底排除PR1的变更。如果branch3已推送到远程仓库,由于rebase改写了提交历史,需要强制推送(推荐用
--force-with-lease替代--force,避免覆盖他人的远程变更):git push --force-with-lease origin branch3
备选方案:交互式rebase
若偏好可视化操作,可通过交互式rebase手动剔除PR1的提交:
git rebase -i <old-dev-commit>
在弹出的编辑器中,找到所有属于PR1的提交行,将行首的pick改为drop,保存退出后Git就会移除这些提交,保留你在branch3上的修改。
内容的提问来源于stack exchange,提问作者Murat Ishenbaev
相关产品推荐
相关产品推荐

