当前位置: 首页 > news >正文

突然断电导致git损坏修复

背景

使用ide开发时突然断电启动后所有文件都成了没有提交的文件。打开git视图日志也消失不见

# git命令执行结果如下
git status
No commits yetChanges to be committed:(use "git rm --cached <file>..." to unstage)new file:   .github/FUNDING.ymlnew file:   .gitignorenew file:   DESIGN.mdnew file:   LICENSEnew file:   PROBLEM.mdnew file:   README.mdnew file:   xxx/pom.xmlnew file:   xxx......new file:   xxxn
git pull
You are not currently on a branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.git pull <remote> <branch>git branch
fatal: Failed to resolve HEAD as a valid ref.
git reflog
fatal: your current branch appears to be broken

分析

突然断电应该时git文件受损导致

  • 进入项目下的.git目录
  • 分析config文件是否损坏,如损坏进行修复

    如格式已损坏或空白 去别的项目.git下把config拷贝过来
    按照自己项目的情况进行修改
    如添加和删除本地分支和远端分支节点
    修改远端分支地址

    # 格式如下
    [core]repositoryformatversion = 0filemode = falsebare = falselogallrefupdates = truesymlinks = falseignorecase = true
    # 远端创库
    [remote "origin"]# 远端创库地址url = https://gitee.com/xxx/xxx.gitfetch = +refs/heads/*:refs/remotes/origin/*
    # 本地master创库
    [branch "master"]remote = originmerge = refs/heads/master
    # 本地dev创库
    [branch "dev"]remote = originmerge = refs/heads/dev	
    
  • 进入.git/refs/heads目录下打开当前分支文件查看是否有内容

如打开dev文件 查看里面的内容 该文件保存的是dev分支最后一次提交的commitId
如4146261a90c75d89235fee5566852dd996326666

  • 进入.git/refs/remotes/origin目录查看当前远程分支是否有内容

参考上一步
origin为远程创库副本名称 如果为其它名称需进入对应目录

  • 如果没有内容去日志文件或远端git创库查看提交id写进去
    • 本地创库分支文件无内容
      # 提交记录格式 
      # 4146261a90c75d89235fee5566852dd996326666 才是commitId
      daab13154a48de2325ca4d4b3c68d80d25a10def 4146261a90c75d89235fee5566852dd996326666 angel <angel@163.com> 1711102685 +0800	commit: 汇总功能一些controller里的逻辑移动到service里
      

      去.git\logs\refs\heads下
      打开对应分支文件 翻动到最下面 参考上面的提交记录格式 把最后提交的commitId复制出来转贴到上一步的空白分支文件里
      复制的一定要是commitId不要复制错了

    • 远程创库分支文件无内容
      • 本地远程创库副本是最新的

        去远程创库网页复制最新的commitId到对应文件里

      • 本地创库副本不是最新的

        根据最后一次提交记录 到提交记录文件下寻找commitId或去远程创库web端寻找
        提交记录文件
        本地创库的提交记录可以根据提交时的描述查找
        远端创库副本提交记录在.git\logs\refs\remotes\origin下打开对应分支拖到最下面复制commitId

        e0e4c6aab3a9ce1f02671e5c8fb907bab642e272 4146261a90c75d98471fee5566852dd996326666 angel <angel@163.com> 1711161193 +0800	update by push
        

修复

  • config修复

    项目下.git/config损坏
    拿份好的替换
    在修改分支部分和替换远端创库地址

  • 本地分支文件修复

    项目下.git/refs/heads下分支文件空白
    去.git\logs\refs\heads下
    打开分支文件拉到最下面
    复制commitId到空白文件中

  • 远端分支文件修复

    项目下.git/refs/remotes\origin下分支文件空白
    去.git\logs\refs\remotes\origin下
    打开分支文件拉到最下面
    复制commitId到空白文件

http://www.lryc.cn/news/324305.html

相关文章:

  • MATLAB入门指南:从零开始进行数学建模竞赛
  • 【JavaEE初阶系列】——带你了解volatile关键字以及wait()和notify()两方法背后的原理
  • GitHub配置SSH Key(详细版本)
  • JavaScript 权威指南第七版(GPT 重译)(六)
  • Learning to summarize from human feedback
  • 数据库迁移测试
  • ASP .Net Core ILogger日志服务
  • LeetCode 2657.找到两个数组的前缀公共数组
  • 【jvm】jinfo使用
  • C++ Thread 源码 观后 自我感悟 整理
  • 2024阿里云2核2G服务器租用价格99元和61元一年
  • 刚刚!奥特曼剧透GPT-5,将在高级推理功能上实现重大进步
  • uniapp使用Canvas给图片加水印把临时文件上传到服务器
  • 小希的迷宫
  • MySQL索引剖析【了解背后的数据结构】
  • 004——内存映射(基于鸿蒙和I.MAX6ULL)
  • 150 Linux C++ 通讯架构实战6 服务器程序目录规划,makefile编写
  • OpenCV支持哪些类型的文件格式读写?
  • 数据库中使用IN操作效率问题
  • unity学习(67)——控制器Joystick Pack方向
  • MATLAB的使用(一)
  • JMeter并发工具的使用
  • 基于springboot+vue的毕业就业信息管理系统
  • 有什么小程序适合个人开发?
  • 【ARXIV2402】MambaIR
  • 【计算机网络篇】数据链路层(3)差错检测
  • 软件配置管理计划
  • 嵌入式备考错题汇总
  • 38 mars3d 对接地图图层 绘制点线面员
  • 什么是Webhook 和 HTTP Endpoint?