Git中HEAD与master分离,放弃最新提交如何切回master对齐远程
问题原因
你执行git checkout 684ec直接切换到指定提交哈希时,会进入分离头指针状态,该状态下的提交不会绑定到任何本地分支,因此你后续的修复提交仅挂载在HEAD指针上,本地master、远程origin/master指针都停留在684ec的位置,push时Git默认推送当前关联的远程分支,分离头指针状态没有绑定分支,所以会提示"everything up to date"。
操作方案(放弃最新提交,切回master)
按照以下步骤操作即可让仓库状态回归规整:
- 第一步:直接切换回master分支
执行后Git会提示存在1个未关联分支的悬空提交,无需处理该提示,此时你的HEAD、本地master已经和远程origin/master完全对齐。git checkout master - 第二步(可选,彻底清理无效提交):如果确认永远不需要用到这个修复提交,执行垃圾回收命令清理悬空对象即可:
git gc --prune=now
可选补充方案(后续需要保留修复提交时使用)
如果你后续反悔想要保留这个修复提交,可以在切换到master分支后执行:
git cherry-pick b438d02
即可把该修复提交合并到master分支,之后执行git push就能正常同步到远程GitHub仓库。
内容的提问来源于stack exchange,提问作者Moyshe Zuchmir
相关产品推荐
相关产品推荐

