执行git reset HEAD~1后为何git status不显示提交、与origin diff结果不一致?
Git分支操作后状态展示异常问题
前置操作流程
- 执行
git checkout -b FRANK...创建自定义分支 - 编辑代码文件后,通过
git commit .完成本地提交 - 执行
git reset HEAD~1尝试撤销上一次提交
异常表现
- 执行
git status查看状态时,输出显示当前处于FRANK_04_14_2020_SET_INPUT_SCOPE_LOOPS分支 - 仅提示
astBase.cpp、astBase.h、constantPropagation.cpp、setInputScope.cpp存在未暂存修改 - 既未显示本地分支相对远端的未推送提交计数,也看不到
NewSdiWriter.cpp的变更记录 - 执行
git diff origin对比远端源时,NewSdiWriter.cpp存在非空差异内容,与git status的展示结果完全不匹配
开发者吐槽:这也是让人想放弃Git的又一个理由。
临时规避方案
因暂时无法定位异常原因,采用以下临时方案处理:
- 将当前所有变更导出为补丁文件
- 切回
master分支 - 新建分支并完成切换
- 重新应用补丁完成变更同步
正常状态参考
日常正常使用时,git status会明确展示本地分支领先远端仓库的未推送提交数量,例如工作区干净时会提示当前分支领先origin/master 1个提交,与当前遇到的异常表现存在明显差异。
内容的提问来源于stack exchange,提问作者user12411795
相关产品推荐
相关产品推荐

