Git本地仓库:如何移除master的commit A或调整其分支归属?
Git分支错误提交处理方案
方案一:彻底移除commit A(从master及可选从MyBranch移除)
仅移除master上的commit A
- 切换到master分支:
git checkout master - 硬重置到commit A提交前的版本,直接丢弃A:
git reset --hard HEAD~1
(注:仅适用于commit A未推送到远程仓库的情况,本地操作无风险) - 完成后MyBranch分支不受影响,依然保留commit B、C(MyBranch中虽包含commit A,但因其变更已被C回滚,代码状态正常)
同时移除MyBranch中的commit A
如果连MyBranch提交历史里的A也想彻底删掉,在完成上述步骤后继续操作:
- 切换到MyBranch分支:
git checkout MyBranch - 执行交互式变基,修改最近3个提交的历史:
git rebase -i HEAD~3 - 在弹出的文本编辑器中,找到commit A对应的行,将开头的
pick替换为drop,保存并退出 - 变基完成后,MyBranch的提交历史将变为
... → B → C,commit A被彻底移除
方案二:将commit A移至MyBranch分支(master回到A之前的状态)
MyBranch原本就基于包含commit A的master创建,因此已包含A、B、C。只需将master恢复到A之前的状态,就相当于把A“转移”到了MyBranch分支下:
- 切换到master分支:
git checkout master - 硬重置到commit A提交前的版本:
git reset --hard HEAD~1 - 此时master回到A之前的状态,MyBranch仍保留A、B、C的提交历史,符合你原本希望A提交在MyBranch的需求(因C已回滚A的变更,代码状态无异常)
内容的提问来源于stack exchange,提问作者Scorb
相关产品推荐
相关产品推荐

