执行git reset --hard后本地及远程仓库均无变化,该如何处理?
问题根因
本地执行git reset --hard完成回退后,你错误执行了git pull命令,该命令会将远程master分支的最新提交合并到本地,直接覆盖了刚完成的回退操作,因此本地和远程版本再次一致,看不到任何变更。
修复本地仓库状态
- 重新执行本地回退操作,将本地分支指向目标提交:
git reset --hard 798cd84
- 验证本地提交日志是否符合预期:
git log --oneline
确认输出中最顶部的提交为目标提交798cd84即可。
同步回退变更到Bitbucket远程仓库
回退操作属于修改提交历史的操作,会导致本地分支版本落后于远程分支,无法使用普通git push完成同步,需要执行强制推送:
- 执行强制推送命令覆盖远程分支提交历史:
git push origin master --force
注意:强制推送会直接修改远程仓库的提交历史,操作前请确认:
- 团队其他成员已经知晓该操作,避免后续协作出现冲突
- 如果Bitbucket仓库为
master分支设置了保护规则,需要先临时关闭强制推送限制,推送完成后再恢复- 推送完成后,其他持有该分支本地副本的成员需要执行
git fetch origin && git reset --hard origin/master同步远程的回退结果,避免已废弃的提交被重新合并到远程。
- 推送完成后刷新Bitbucket仓库的提交记录页面,确认已经回退到目标版本
- 本地执行
git status,确认提示Your branch is up to date with 'origin/master'即操作完成。
内容的提问来源于stack exchange,提问作者user3169905
相关产品推荐
相关产品推荐

