git操作出错:fatal: not a git repository (or any of the parent directories): .git

概要

在执行git操作的过程中电脑突然重启导致.git目录下文件损坏导致git所有命令不可用,本文简单记录恢复过程。

解决过程

路径一:

通过搜索引擎、chatgpt等途径检索错误信息,几乎无一例外都给出git init的解决办法,尝试后错误仍然存在。后来经过思考git init用来新建工程缺少.git文件的,当前的出错的是已有工程,所以该解决方案不适用本次问题。

路径二:

印象中git和svn的区别,Git是分布式的而SVN是集中式的,基于Git的特性数据存放在本地,遂萌生尝试通过本地.git文件找回本地分支修改未同步远程仓库的代码。

.git文件夹列表如下图所示,由于对git各个目录及存放的数据不了解,根据本地最后一次修改程序的时间和文件的更新时间来判断哪些文件分支修改相关。经过对比分析发现HEAD文件、refs目录、logs目录和本次问题密切相关。

  • .git\logs\HEAD存放仓库所有的操作记录,包括创建分支、commit提交、分支合并变更的commit和message
  • .git\logs\refs 存放对应分支的提交变化历史信息
  • .git\refs 存放branch分支最后一次提交的commit值,例如.git\refs\heads\master文件存放master分支最新的commit id
  • .git\HEAD 存放工程当前所处的分支,heads后面为分支名格式形如:ref: refs/heads/feat/cloudType

弄清楚上述文件信息后,发现.git\HEAD和.git\refs\heads\feat\cloudType文件内容异常,根据分支及最后的修改,通过.git\logs\refs目录下对应的分支变化信息修复异常文件。然后尝试使用git命令就恢复正常了。

补充子目录截图

  • .git\logs子目录

  • .git\refs子目录

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值