Git技术求助:废弃无效提交并将分支指向正确版本
Git仓库状态梳理解决方案
背景:对仓库做了修改并提交推送版本4326b5(备注"Waypoint"),之后回退至可用提交64b7d01(备注"Merge commit"),基于此修改解决了大量问题,不想丢失改动,需梳理混乱状态:
场景一
昨日HEAD处于"Merge commit"(64b7d01),想废弃"Waypoint"(4326b5)并让master指向该版本,执行git reset --soft HEAD无效,正确操作:
- 切换到master分支:
git checkout master - 执行硬重置到目标提交:
git reset --hard 64b7d01 - 强制推送更新远程master分支:
git push origin master --force
注意:强制推送会覆盖远程分支内容,需提前告知团队成员,避免其他人拉取代码时出现冲突。
场景二
今日在分离HEAD状态下提交了bc35e77(备注"Correctly reports"),需让master和origin/master指向该版本并废弃"Waypoint"(4326b5),操作如下:
方法一:直接重置master到目标提交
- 切换到master分支:
git checkout master - 硬重置到
bc35e77:git reset --hard bc35e77 - 强制推送同步远程:
git push origin master --force
方法二:合并分离HEAD的提交到master
如果希望保留提交历史的关联关系,可执行:
- 切换到master分支:
git checkout master - 合并目标提交:
git merge bc35e77 - 强制推送同步远程:
git push origin master --force
注意:两种方法都涉及强制推送,需确保团队成员知晓操作,必要时让其他人先备份本地修改再拉取远程代码。
内容的提问来源于stack exchange,提问作者Joymaker
相关产品推荐
相关产品推荐

