我试图使用Git Gui执行git提交.我上演了几个文件,然后由于电量不足,我的电脑突然关闭了.我将其插入,重新打开,并提交了我想要的文件.然后我跑了git push,就像我之前做了一百万次没有任何问题,这次我得到以下错误:
Counting objects: 8, done.
error: object file .git/objects/b5/60c934f6bad40f4f246973afc0139ed91a2d32 is empty
Compressing objects: 100% (4/4), done.
error: object file .git/objects/b5/60c934f6bad40f4f246973afc0139ed91a2d32 is empty
fatal: loose object b560c934f6bad40f4f246973afc0139ed91a2d32 (stored in .git/objects/b5/60c934f6bad40f4f246973afc0139ed91a2d32) is corrupt
error: failed to push some refs to 'git@bitbucket.org:joemorano/app.git'
Run Code Online (Sandbox Code Playgroud)
这可能是由于计算机在我执行第一次提交之前关闭了吗?
在所有这一切发生之前,我显然通过bundle install在我的服务器上以root身份运行来破坏我的应用程序的生产版本,现在服务器上的所有内容都搞砸了,但我不知道这会如何影响本地版本.我从未做过git pull或类似的事情.
有没有人遇到此错误?
第1步:备份.git(事实上,我在每个更改内容的步骤之间执行此操作,但使用新的副本名称,例如.git-old-1,.git-old-2等) :
cp -a .git .git-old
Run Code Online (Sandbox Code Playgroud)
第2步:运行
git fsck --full
Run Code Online (Sandbox Code Playgroud)
您将收到此错误消息
例如:错误:目标文件.git/objects/0A/dsdadadadaaeer4r3434343434334f为空
第3步:删除上面的空文件,它位于您的.git/objects/文件夹中.继续删除空文件.
第4步:删除所有空文件后,立即运行
git fsck --full
Run Code Online (Sandbox Code Playgroud)
第5步:尝试git reflog.失败,因为HEAD坏了.
第6步:手动获取reflog:
git log origin/master..HEAD
Run Code Online (Sandbox Code Playgroud)
步骤7:请注意,从步骤6开始,我们了解到HEAD当前指向最后一次提交.所以让我们试着看一下父提交:
git show commit-id
Run Code Online (Sandbox Code Playgroud)
第8步:所以现在我们需要将HEAD指向commit-id
git update-ref HEAD commit-id
Run Code Online (Sandbox Code Playgroud)
希望这对你有用.
Run Code Online (Sandbox Code Playgroud)... failed to push some refs to 'git@bitbucket.org:joemorano/app.git'这可能是由于计算机在我执行第一次提交之前关闭了吗?
当然,是的.
有没有人遇到此错误?
另请参见:如何修复损坏的git存储库?
在这种情况下,由于你(可能)在bitbucket上有一个非损坏的备份,我首先将它克隆到一个新的(好的)克隆,然后看看我是否可以从现有的(坏的)恢复任何中间提交和文件克隆和/或其工作树,将它们放入新的(好的)克隆中.一旦恢复了从坏克隆中恢复的任何内容,就可以放弃或删除它.(根据您的计算机及其文件系统检查和修复工具,您可能也希望在执行任何其他操作之前运行它们.)
| 归档时间: |
|
| 查看次数: |
14343 次 |
| 最近记录: |