当我尝试提交更改时,我收到此错误:
error: object file .git/objects/31/65329bb680e30595f242b7c4d8406ca63eeab0 is empty
fatal: loose object 3165329bb680e30595f242b7c4d8406ca63eeab0 (stored in .git/objects/31/65329bb680e30595f242b7c4d8406ca63eeab0) is corrupt
Run Code Online (Sandbox Code Playgroud)
不知道如何解决这个错误?
编辑
我试过git fsck
我有:
error: object file .git/objects/03/dfd60a4809a3ba7023cbf098eb322d08630b71 is empty
fatal: loose object 03dfd60a4809a3ba7023cbf098eb322d08630b71 (stored in .git/objects/03/dfd60a4809a3ba7023cbf098eb322d08630b71) is corrupt
Run Code Online (Sandbox Code Playgroud)
Nat*_*nos 845
我遇到了类似的问题.我的笔记本电脑在git操作期间没电了.嘘.
我没有任何备份.(注意:Ubuntu One不是git的备份解决方案;它将有助于用您损坏的存储库覆盖您的理智存储库.)
对于git向导,如果这是一个不好的修复方法,请发表评论.然而,它确实对我有用......至少是暂时的.
第1步:备份.git(事实上,我在每个更改内容的步骤之间执行此操作,但使用新的副本名称,例如.git-old-1,.git-old-2等) :
cp -a .git .git-old
Run Code Online (Sandbox Code Playgroud)
第2步:运行 git fsck --full
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git fsck --full
error: object file .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e is empty
fatal: loose object 8b61d0135d3195966b443f6c73fb68466264c68e (stored in .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e) is corrupt
Run Code Online (Sandbox Code Playgroud)
第3步:删除空文件.我想到了什么; 无论如何它的空白.
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ rm .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e
rm: remove write-protected regular empty file `.git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e'? y
Run Code Online (Sandbox Code Playgroud)
第3步:git fsck
再次运行.继续删除空文件.您也可以cd
进入该.git
目录并运行find . -type f -empty -delete -print
以删除所有空文件.最终git开始告诉我它实际上正在使用对象目录:
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git fsck --full
Checking object directories: 100% (256/256), done.
error: object file .git/objects/e0/cbccee33aea970f4887194047141f79a363636 is empty
fatal: loose object e0cbccee33aea970f4887194047141f79a363636 (stored in .git/objects/e0/cbccee33aea970f4887194047141f79a363636) is corrupt
Run Code Online (Sandbox Code Playgroud)
第4步:删除所有空文件后,我最终git fsck
实际运行:
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git fsck --full
Checking object directories: 100% (256/256), done.
error: HEAD: invalid sha1 pointer af9fc0c5939eee40f6be2ed66381d74ec2be895f
error: refs/heads/master does not point to a valid object!
error: refs/heads/master.u1conflict does not point to a valid object!
error: 0e31469d372551bb2f51a186fa32795e39f94d5c: invalid sha1 pointer in cache-tree
dangling blob 03511c9868b5dbac4ef1343956776ac508c7c2a2
missing blob 8b61d0135d3195966b443f6c73fb68466264c68e
missing blob e89896b1282fbae6cf046bf21b62dd275aaa32f4
dangling blob dd09f7f1f033632b7ef90876d6802f5b5fede79a
missing blob caab8e3d18f2b8c8947f79af7885cdeeeae192fd
missing blob e4cf65ddf80338d50ecd4abcf1caf1de3127c229
Run Code Online (Sandbox Code Playgroud)
第5步:尝试git reflog
.失败,因为我的头部坏了.
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git reflog
fatal: bad object HEAD
Run Code Online (Sandbox Code Playgroud)
第6步:Google.找到这个.手动获取reflog的最后两行:
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ tail -n 2 .git/logs/refs/heads/master
f2d4c4868ec7719317a8fce9dc18c4f2e00ede04 9f0abf890b113a287e10d56b66dbab66adc1662d Nathan VanHoudnos <nathanvan@gmail.com> 1347306977 -0400 commit: up to p. 24, including correcting spelling of my name
9f0abf890b113a287e10d56b66dbab66adc1662d af9fc0c5939eee40f6be2ed66381d74ec2be895f Nathan VanHoudnos <nathanvan@gmail.com> 1347358589 -0400 commit: fixed up to page 28
Run Code Online (Sandbox Code Playgroud)
步骤7:请注意,从步骤6开始,我们了解到HEAD当前指向最后一次提交.所以让我们试着看一下父提交:
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git show 9f0abf890b113a287e10d56b66dbab66adc1662d
commit 9f0abf890b113a287e10d56b66dbab66adc1662d
Author: Nathan VanHoudnos <nathanvan@XXXXXX>
Date: Mon Sep 10 15:56:17 2012 -0400
up to p. 24, including correcting spelling of my name
diff --git a/tex/MCMC-in-IRT.tex b/tex/MCMC-in-IRT.tex
index 86e67a1..b860686 100644
--- a/tex/MCMC-in-IRT.tex
+++ b/tex/MCMC-in-IRT.tex
Run Code Online (Sandbox Code Playgroud)
有效!
步骤8:所以现在我们需要将HEAD指向9f0abf890b113a287e10d56b66dbab66adc1662d.
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git update-ref HEAD 9f0abf890b113a287e10d56b66dbab66adc1662d
Run Code Online (Sandbox Code Playgroud)
哪个没有抱怨.
第9步:看看fsck说的是什么:
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git fsck --full
Checking object directories: 100% (256/256), done.
error: refs/heads/master.u1conflict does not point to a valid object!
error: 0e31469d372551bb2f51a186fa32795e39f94d5c: invalid sha1 pointer in cache-tree
dangling blob 03511c9868b5dbac4ef1343956776ac508c7c2a2
missing blob 8b61d0135d3195966b443f6c73fb68466264c68e
missing blob e89896b1282fbae6cf046bf21b62dd275aaa32f4
dangling blob dd09f7f1f033632b7ef90876d6802f5b5fede79a
missing blob caab8e3d18f2b8c8947f79af7885cdeeeae192fd
missing blob e4cf65ddf80338d50ecd4abcf1caf1de3127c229
Run Code Online (Sandbox Code Playgroud)
步骤10:缓存树中的无效sha1指针看起来像是来自(现在过时的)索引文件(源).所以我杀了它并重置了回购.
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ rm .git/index
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git reset
Unstaged changes after reset:
M tex/MCMC-in-IRT.tex
M tex/recipe-example/build-example-plots.R
M tex/recipe-example/build-failure-plots.R
Run Code Online (Sandbox Code Playgroud)
第11步:再次查看fsck ...
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git fsck --full
Checking object directories: 100% (256/256), done.
error: refs/heads/master.u1conflict does not point to a valid object!
dangling blob 03511c9868b5dbac4ef1343956776ac508c7c2a2
dangling blob dd09f7f1f033632b7ef90876d6802f5b5fede79a
Run Code Online (Sandbox Code Playgroud)
在晃来晃去斑点不是错误.我不关心master.u1conflict,现在它正在工作我不想再触摸了!
第12步:赶上我的本地修改:
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: tex/MCMC-in-IRT.tex
# modified: tex/recipe-example/build-example-plots.R
# modified: tex/recipe-example/build-failure-plots.R
#
< ... snip ... >
no changes added to commit (use "git add" and/or "git commit -a")
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git commit -a -m "recovering from the git fiasco"
[master 7922876] recovering from the git fiasco
3 files changed, 12 insertions(+), 94 deletions(-)
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git add tex/sept2012_code/example-code-testing.R
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git commit -a -m "adding in the example code"
[master 385c023] adding in the example code
1 file changed, 331 insertions(+)
create mode 100644 tex/sept2012_code/example-code-testing.R
Run Code Online (Sandbox Code Playgroud)
所以希望将来可以对人们有所帮助.我很高兴它奏效了.
Mar*_*jur 162
git对象文件已经损坏(正如其他答案中所指出的那样).这可能发生在机器崩溃等情况下.
我有同样的事情.在阅读了其他热门答案之后,我找到了使用以下命令修复损坏的git存储库的最快方法(在包含该.git
文件夹的git工作目录中执行):
(请务必先备份您的git存储库文件夹!)
find .git/objects/ -type f -empty | xargs rm
git fetch -p
git fsck --full
Run Code Online (Sandbox Code Playgroud)
这将首先删除导致整个存储库损坏的任何空对象文件,然后从远程存储库中获取缺少的对象(以及最新更改),然后执行完整的对象存储检查.在这一点上,应该没有任何错误地成功(尽管可能仍有一些警告!)
PS.这个答案建议您在某处(例如,在GitHub上)拥有git存储库的远程副本,而破坏的存储库是与远程存储库绑定的本地存储库,该存储库仍处于机智状态.如果不是这样,那么不要试图按照我推荐的方式修复它.
Sim*_*nni 33
我解决了这个删除git fsck正在检测的各种空文件,然后运行一个简单的git pull.
我发现令人失望的是,即使文件系统实现日志和其他"事务"技术以保持fs理智,git也可能因为电源故障或设备空间而进入损坏状态(并且无法自行恢复).
mar*_*rlo 32
当我按下提交并且计算机挂起时,这个错误发生在我身上.这是我修复它的方式.
git status
Run Code Online (Sandbox Code Playgroud)
显示空/损坏的目标文件
rm .git/objects/08/3834cb34d155e67a8930604d57d3d302d7ec12
Run Code Online (Sandbox Code Playgroud)
去掉它
git status
Run Code Online (Sandbox Code Playgroud)
我收到了fatal: bad object HEAD
消息
rm .git/index
Run Code Online (Sandbox Code Playgroud)
我删除index
了重置
git reset
Run Code Online (Sandbox Code Playgroud)
致命:无法解析对象'HEAD'.
git status
git pull
Run Code Online (Sandbox Code Playgroud)
只是为了检查发生了什么
tail -n 2 .git/logs/refs/heads/MY-CURRENT-BRANCH
Run Code Online (Sandbox Code Playgroud)
打印最后2行tail -n 2
日志分支以显示我的最后2行commit hash
git update-ref HEAD 7221fa02cb627470db163826da4265609aba47b2
Run Code Online (Sandbox Code Playgroud)
我选了最后一个 commit hash
git status
Run Code Online (Sandbox Code Playgroud)
显示我的所有文件,deleted
因为我删除了该.git/index
文件
git reset
Run Code Online (Sandbox Code Playgroud)
继续重置
git status
Run Code Online (Sandbox Code Playgroud)
验证我的修复
注意: 当我登陆此问题并使用答案作为参考时,步骤开始.
小智 11
我在使用虚拟机时经常遇到这个问题。
对我来说,有以下作品:
cd /path/to/your/project
rm -rf .git
Run Code Online (Sandbox Code Playgroud)
如果您想节省一些下载,请进入文件资源管理器并删除文件夹中已提交的所有文件,并将其保留在/vendor和/node_modules(我使用PHP Composer和npm)文件夹中。
然后只需创建一个新的存储库:
git init
Run Code Online (Sandbox Code Playgroud)
添加您的遥控器
git remote add origin ssh://git@github.com/YourUsername/repoName.git
Run Code Online (Sandbox Code Playgroud)
并获取分支/全部
git fetch origin somebranch
Run Code Online (Sandbox Code Playgroud)
并检查一下
git checkout somebranch
Run Code Online (Sandbox Code Playgroud)
那么您应该处于错误之前的位置。
小智 8
我有同样的问题:拉远的仓库,当我做了git的状态后,我得到了:"错误:目标文件(...)为空","致命的:宽松的对象(...)已损坏"
我解决这个问题的方法是:
我不确切知道发生了什么事,但这些指示似乎让一切都干净了.
小智 8
因为我必须定期重启我的VM,所以不知何故这个问题经常发生在我身上.经过几次,我意识到每次发生这种情况时我都不能重复@ Nathan-Vanhoudnos所描述的过程,尽管它总是有效的.然后我想出了以下更快的解决方案.
步骤1
将整个仓库移动到另一个文件夹.
mv current_repo temp_repo
Run Code Online (Sandbox Code Playgroud)
第2步
再次从原点克隆回购.
git clone source_to_current_repo.git
Run Code Online (Sandbox Code Playgroud)
第3步
除了.git文件夹之外,删除新repo下的所有内容.
第4步
将所有内容从temp_repo移动到除.git文件夹之外的新repo .
第5步
删除temp_repo,我们完成了.
几次之后,我确信你可以很快完成这个程序.
在一个脚本中
#! /bin/sh
# Save Git data
cp -r .git gitold
# Remove all empty Git object files
find .git -type f -empty -delete -print
# Get the current branch name
branchname=$(git branch --show-current)
# Get the latest commit hash
commit=$(tail -2 .git/logs/refs/heads/$branchname | awk '{ print $2 }' | tr -d '[:space:]')
# Set HEAD to this latest commit
git update-ref HEAD $commit
# Pull the latest changes on the current branch (considering remote is origin)
git pull origin $branchname
echo "If everything looks fine you remove the git backup running :\n\
$ rm -rf gitold \n\
Otherwise restore it with: \n\
$ rm -rf .git; mv gitold .git"
Run Code Online (Sandbox Code Playgroud)
小智 5
就这样.也许这不是最好的方式,但我认为它是如此实用.
归档时间: |
|
查看次数: |
156610 次 |
最近记录: |