背景
使用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下打开对应分支拖到最下面复制commitIde0e4c6aab3a9ce1f02671e5c8fb907bab642e272 4146261a90c75d98471fee5566852dd996326666 angel <angel@163.com> 1711161193 +0800 update by push
-
- 本地创库分支文件无内容
修复
- config修复
项目下.git/config损坏
拿份好的替换
在修改分支部分和替换远端创库地址 - 本地分支文件修复
项目下.git/refs/heads下分支文件空白
去.git\logs\refs\heads下
打开分支文件拉到最下面
复制commitId到空白文件中文章来源:https://www.toymoban.com/news/detail-847080.html - 远端分支文件修复
项目下.git/refs/remotes\origin下分支文件空白
去.git\logs\refs\remotes\origin下
打开分支文件拉到最下面
复制commitId到空白文件文章来源地址https://www.toymoban.com/news/detail-847080.html
到了这里,关于突然断电导致git损坏修复的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!