突然断电导致git损坏修复

这篇具有很好参考价值的文章主要介绍了突然断电导致git损坏修复。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

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

# git命令执行结果如下
git status
No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   .github/FUNDING.yml
        new file:   .gitignore
        new file:   DESIGN.md
        new file:   LICENSE
        new file:   PROBLEM.md
        new file:   README.md
        new file:   xxx/pom.xml
        new 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 = 0
    	filemode = false
    	bare = false
    	logallrefupdates = true
    	symlinks = false
    	ignorecase = true
    # 远端创库
    [remote "origin"]
    	# 远端创库地址
    	url = https://gitee.com/xxx/xxx.git
    	fetch = +refs/heads/*:refs/remotes/origin/*
    # 本地master创库
    [branch "master"]
    	remote = origin
    	merge = refs/heads/master
    # 本地dev创库
    [branch "dev"]
    	remote = origin
    	merge = 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到空白文件文章来源地址https://www.toymoban.com/news/detail-847080.html

到了这里,关于突然断电导致git损坏修复的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 突然断电没保存的文档如何找回?给你支几招!

    概述:突然断电没保存的文档如何找回?我们在办公中经常会用到Word/PPT/EXCEL等文档,要是正在编辑时,电脑突然断电了,而文档还来得及保存怎么办?不要着急,下面教你找回未保存的文档。 一到夏天,用电量就激增,城市供电不足,就会部分限制办公用电。我们那栋办公

    2024年02月08日
    浏览(41)
  • 关于 虚拟机git突然出现“.git/‘: SSL certificate problem: certificate is not yet valid”导致无法同步代码 的解决方法

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/132143989 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)   虚拟机的副

    2024年02月04日
    浏览(62)
  • 20230729 git github gitee

    1.gitee与gitHub概念? Gitee(码云)是开源中国社区推出的代码托管协作开发平台,支持Git和SVN,提供免费的私有仓库托管。Gitee专为开发者提供稳定、高效、安全的云端软件开发协作平台,无论是个人、团队、或是企业,都能够实现代码托管、项目管理、协作开发。(国内) Git

    2024年02月15日
    浏览(46)
  • 【Git】gitee与github同步

    本章所讲内容有克隆远程库(填上章的坑)和两个远程库在本地同步上传的方法。 接着我们上一篇讲了的内容:Git建立远程库,继续学习Git吧! 在上一次我们讲了,我们比较常用的还是从远程库来进行克隆,而不是用git remote add命令去连接我们的远程库,那么我们改如何克隆

    2024年02月10日
    浏览(50)
  • git、github、gitee、gitlub

    版本控制 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。 版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换 集中式版本控制工具 有一个单一的集中管理的服务器 好处:方便管理员进行权限管控

    2023年04月08日
    浏览(89)
  • Git、Github、Gitee的区别

    ⭐作者主页:@逐梦苍穹 ⭐所属专栏:Git 什么是版本管理?   版本管理是管理各个不同的版本,出了问题可以及时回滚。   Git是一个分布式版本控制系统,用于跟踪和管理代码的变化。它是一个命令行工具,可以在本地计算机上使用,无需依赖任何托管平台。   Git具

    2024年02月09日
    浏览(46)
  • git 同时配置 gitee github

    1、 删除 C:Usersdell.ssh 目录。 在任意目录右击——》Git Bash Here,打开Git Bash窗口,下方命令在Git Bash窗口输入。 2、添加git全局范围的用户名和邮箱 3、进入 C:Usersdell.ssh 目录。 4、 C:Usersdell.ssh 下产生了id_rsa.gitee、id_rsa.gitee.pub、id_rsa.github、id_rsa.github.pub文件。 5、 6、在

    2024年02月08日
    浏览(58)
  • Git同时配置GitHub和Gitee

    以下所有命令建议在 git bash 中完成 如果是之前没设置过的,就不用清除了。 可以通过git config --global --list来查看是否设置过。 生成新的 SSH keys GitHub 的钥匙 疯狂回车即可。 Gitee 的钥匙 邮箱换一个。不要跟上面相同就行了。 疯狂回车即可。 完成后会在~/.ssh / 目录下生成以下

    2024年02月11日
    浏览(53)
  • 【Git】本地搭建Gitee、Github环境

      

    2024年02月12日
    浏览(66)
  • Git同时配置Gitee和GitHub

    一、清除git的全局设置 通过 git config --global --list 来查看是否设置过。 二、生成新的 SSH keys GitHub 的钥匙 疯狂回车即可。 Gitee 的钥匙 疯狂回车即可。 完成后会在~/.ssh / 目录下生成以下文件。 id_rsa.gitee id_rsa.gitee.pub id_rsa.github id_rsa.github.pub 三、 识别 SSH keys 新的私钥 默认只读

    2024年02月13日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包