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过程中出现冲突,解决冲突后执行:
要是想放弃rebase,执行git add . git rebase --continuegit 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
相关产品推荐
相关产品推荐

