如何修复GIT错误:对象文件是空的?

时间:2012-07-29 02:38:10

标签: git

当我尝试提交更改时,我收到此错误:

error: object file .git/objects/31/65329bb680e30595f242b7c4d8406ca63eeab0 is empty
fatal: loose object 3165329bb680e30595f242b7c4d8406ca63eeab0 (stored in .git/objects/31/65329bb680e30595f242b7c4d8406ca63eeab0) is corrupt

知道如何解决这个错误吗?

修改

我试过git fsck我已经:

error: object file .git/objects/03/dfd60a4809a3ba7023cbf098eb322d08630b71 is empty
fatal: loose object 03dfd60a4809a3ba7023cbf098eb322d08630b71 (stored in .git/objects/03/dfd60a4809a3ba7023cbf098eb322d08630b71) is corrupt

29 个答案:

答案 0 :(得分:801)

我有类似的问题。我的笔记本电脑在git操作期间没电了。嘘。

我没有任何备份。 (N.B. Ubuntu One不是git的备份解决方案;它将有助于用你损坏的存储库覆盖你的理智存储库。)

对于git向导,如果这是一个不好的修复方法,请发表评论。然而,它确实对我有用......至少是暂时的。

步骤1:备份.git(事实上,我在每个更改内容的步骤之间执行此操作,但使用新的副本名称,例如.git-old-1,.git-old-2,等):

cp -a .git .git-old

第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

步骤3:删除空文件。我想到了什么;无论如何它的空白。

nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ rm .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e 
rm: remove write-protected regular empty file `.git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e'? y

第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

步骤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

第5步:尝试git reflog。失败,因为我的头部坏了。

nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git reflog
fatal: bad object HEAD

第6步:Google。查找this。手动获取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

步骤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

有效!

步骤8:所以现在我们需要将HEAD指向9f0abf890b113a287e10d56b66dbab66adc1662d。

nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git update-ref HEAD 9f0abf890b113a287e10d56b66dbab66adc1662d

哪个没有抱怨。

第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

步骤10:缓存树中的无效sha1指针似乎来自(现在已过时)索引文件(source)。所以我杀了它并重置了回购。

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

步骤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

dangling blobs are not errors。我不关心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

所以希望将来可以对人们有所帮助。我很高兴它有效。

答案 1 :(得分:132)

git对象文件已损坏(正如其他答案中所指出的那样)。这可能发生在机器崩溃等情况下。

我有同样的事情。在阅读了其他热门答案之后,我找到了使用以下命令修复损坏的git存储库的最快方法(在包含.git文件夹的git工作目录中执行):

  

(请务必先备份您的git存储库文件夹!)

find .git/objects/ -type f -empty | xargs rm
git fetch -p
git fsck --full

这将首先删除导致整个存储库损坏的删除所有空对象文件,然后从获取丢失的对象(以及最新更改)远程存储库,然后执行完整的对象存储检查。在这一点上,这应该没有任何错误地成功(尽管可能仍有一些警告!)

  

PS。这个答案表明你有一个git存储库的远程副本   某处(例如在GitHub上),破碎的存储库是绑定到远程存储库的本地存储库,该存储库仍处于机智状态。如果不是这样,那么不要试图按照我推荐的方式修复它。

答案 2 :(得分:32)

我解决了这个问题,删除了git fsck正在检测的各种空文件,然后运行一个简单的git pull。

我觉得令人失望的是,即使文件系统实现日志记录和其他“事务”技术以保持fs理智,git也可能因为电源故障或空间而进入损坏状态(并且无法自行恢复)在设备上。

答案 3 :(得分:31)

当我按下提交并且计算机挂起时,这个错误发生在我身上。 这就是我修复它的方法。

修复步骤

git status

显示空/损坏的目标文件

rm .git/objects/08/3834cb34d155e67a8930604d57d3d302d7ec12

将其删除

git status

我收到了fatal: bad object HEAD条消息

rm .git/index

我删除了index以进行重置

git reset

致命:无法解析对象'HEAD'。

git status
git pull

只是为了检查发生了什么

tail -n 2 .git/logs/refs/heads/MY-CURRENT-BRANCH

打印日志分支的最后2行tail -n 2以显示我的最后2 commit hash

git update-ref HEAD 7221fa02cb627470db163826da4265609aba47b2

我选择了最后一个commit hash

git status

将我的所有文件显示为deleted,因为我删除了.git/index文件

git reset

继续重置

git status

验证我的修复

注意:当我登陆此问题并使用答案作为参考时,步骤就开始了。

答案 4 :(得分:8)

我遇到了同样的问题:在拉远远的存储库之后,当我做了一个git状态时,我得到了: “错误:对象文件(...)为空” “致命:松散的物体(......)已损坏”

我解决这个问题的方法是:

  1. git stash
  2. 错误地删除git文件(不确定是否有必要)
  3. git stash clear
  4. 我不确切知道发生了什么事情,但这些说明似乎使一切都干净了。

答案 5 :(得分:7)

因为我必须定期重启我的VM,所以不知何故这个问题经常发生在我身上。经过几次,我意识到每次发生这种情况时我都不能重复@ Nathan-Vanhoudnos所描述的过程,尽管它总是有效的。然后我想出了以下更快的解决方案。

第1步

将整个仓库移动到另一个文件夹。

mv current_repo temp_repo

第2步

再次从原点克隆回购。

git clone source_to_current_repo.git

第3步

除了 .git 文件夹之外,删除新回购下的所有内容

第4步

所有内容 temp_repo 移至新回购 .git 文件夹。

第5步

删除 temp_repo ,我们就完成了。

几次之后,我确信你可以很快完成这个程序。

答案 6 :(得分:5)

  1. mv你的文件夹应用程序进行备份,即 mv app_folder app_folder_bk(就像 git stash
  2. git clone your_repository
  3. 最后,.打开合并工具(我使用meld diff viewer linux或Winmerge Windows)并将更改从右侧( app_folder_bk )复制到左侧(新的 app_folder )(它就像一个< strong> git stash apply )。
  4. 这就是全部。也许这不是最好的方式,但我认为它是如此实用。

答案 7 :(得分:5)

我在虚拟机上经常遇到这个问题。

对我来说,以下作品:

cd /path/to/your/project
rm -rf .git

如果要保存一些下载内容,请-进入文件资源管理器并删除已提交的文件夹中的所有文件,然后保留在/ vendor和/ node_modules(我与composer和npm一起使用)文件夹中。

然后只需创建一个新的仓库

git init

添加您的遥控器

git remote add origin ssh://git@github.com/YourUsername/repoName.git

并获取分支/全部

git fetch origin somebranch

然后查看

git checkout somebranch

那你应该在错误发生之前了。

希望这会有所帮助。

致谢。

答案 8 :(得分:3)

在我的情况下,发生此错误是因为我输入了提交消息而我的笔记本已关闭。

我做了以下步骤来修复错误:

  • git checkout -b backup-branch#创建备用分支
  • git reset --hard HEAD~4#重置为一切正常的提交。在我的情况下,我不得不支持4个头部提交,直到我的头部在我输入提交消息之前。 在执行此步骤之前,请复制您将重置的提交的哈希值,在我的情况下,我复制了最后4个提交的哈希值
  • git cherry-pick <commit-hash> #Cherry从旧分支到新分支选择重置的提交(在我的例子中是4次提交,所以我做了这个步骤4次)。
  • git push origin backup-branch#推新分支以确保一切正常
  • git branch -D your-branch#在本地删除分支('your-branch'是有问题的分支)
  • git push origin :your-branch#从远程
  • 删除分支
  • git branch -m backup-branch your-branch#将备份分支重命名为具有问题的分支的名称
  • git push origin your-branch#推新分支
  • git push origin :backup-branch#从远程
  • 删除备份分支

答案 9 :(得分:2)

  

我假设你有一个遥控器已经推送到它的所有相关更改。我不关心本地更改,只是想避免删除和重新克隆大型存储库。如果您确实有重要的本地更改,您可能需要更加小心。

我的笔记本电脑崩溃后,我遇到了同样的问题。 可能是因为它是一个大型存储库,我有相当多的损坏的目标文件,这些文件在调用git fsck --full时一次只出现一个,所以我写了一个小的单行内容来自动删除其中一个:

$ sudo rm `git fsck --full 2>&1 | grep -oE -m 1 ".git/objects/[0-9a-f]{2}/[0-9a-f]*"`

  • 2>&1将错误消息重定向到stdout以便能够grep it
  • 使用的grep选项:
    • -o仅返回实际匹配
    • 的行的部分
    • -E启用高级正则表达式
    • -m 1确保仅返回第一个匹配项
    • [0-9a-f]{2}匹配0到9之间的任何字符和a和f,如果其中两个一起出现
    • [0-9a-f]*匹配0到9之间的任意数量的字符,并且a和f一起出现

它一次只删除一个文件,因此您可能希望在循环中调用它:

$ while true; do sudo rm `git fsck --full 2>&1 | grep -oE -m 1 ".git/objects/[0-9a-f]{2}/[0-9a-f]*"`; done

这个问题是,它不再输出任何有用的东西,所以你不知道它什么时候完成(它应该在一段时间后不做任何有用的事情)

为了“修复”这个问题,我在每轮之后添加了git fsck --full的调用,如下所示: $ while true; do sudo rm `git fsck --full 2>&1 | grep -oE -m 1 ".git/objects/[0-9a-f]{2}/[0-9a-f]*"`; git fsck --full; done

它现在大约快一半,但确实输出了它的“状态”。

在此之后我玩了一些关于这个帖子中的建议并最终达到了我可以git stashgit stash drop许多破碎的东西。

第一个问题已解决

之后我仍然遇到以下问题: unable to resolve reference 'refs/remotes/origin/$branch': reference broken可以解决 $ rm \repo.git\refs\remotes\origin\$branch

$ git fetch

然后我做了一个 $ git gc --prune=now

$ git remote prune origin

以获得良好的衡量标准

git reflog expire --stale-fix --all

在运行error: HEAD: invalid reflog entry $blubb时摆脱git fsck --full

答案 10 :(得分:2)

在一个脚本中

#! /bin/sh

# Save git data 
cp -r .git gitold
# Remove all empty git object files 
find .git -type f -empty -delete -print
# Get current branch name
branchname=$(git branch --show-current)
# Get latest commit hash
commit=$(tail -2 .git/logs/refs/heads/jwt | awk '{ print $2 }' | tr -d '[:space:]')
# Set HEAD to this latest commit
git update-ref HEAD $commit
# Pull 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"      

答案 11 :(得分:2)

以下是处理此问题的一种非常简单快捷的方法 IF 您拥有所需的所有分支和提交的本地仓库,并且如果您可以创建新的仓库(或者删除服务器的repo并在其中创建一个新的repo:)

  1. 在服务器上创建一个新的空仓库(或删除旧仓库并在其位置创建一个新仓库)
  2. 更改本地副本的远程URL以指向新存储库的远程URL。
  3. 将所有分支从本地仓库推送到新服务器仓库。
  4. 这会保留您在本地仓库中的所有提交历史记录和分支。

    如果您在repo上有合作者,那么我认为在很多情况下,您的协作者所要做的就是更改其本地仓库的远程URL,并可选择推送他们拥有的服务器没有的任何提交。

    当我遇到同样的问题时,这个解决方案对我有用。我有一个合作者。在我将本地仓库推送到新的远程仓库之后,他只是将他的本地仓库更改为指向远程仓库URL,一切正常。

答案 12 :(得分:1)

让我们变得简单..只有你将源代码上传到远程git repo

  1. 备份你的.git
  2. 检查你的git

    git fsck --full
    
  3. 删除空对象文件(全部)

    rm .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e
    
  4. 再次检查你的git。

    git fsck --full
    
  5. 从远程git中提取你的来源

    git pull origin master
    

答案 13 :(得分:1)

我遇到同样的问题,我用一种非常简单的方法来修复它。我发现那些丢失的文件存在于我队友的计算机上。

将这些文件逐个复制到git服务器(总共9个文件),这解决了问题。

答案 14 :(得分:1)

git stash
git checkout master
cd .git/ && find . -type f -empty -delete
git branch your-branch-name -D
git checkout -b your-branch-name
git stash pop

解决我的问题

答案 15 :(得分:1)

就我而言,保留本地提交历史记录对我而言并不重要。因此,如果这也适用于您,您可以将其作为上述解决方案的快速替代方案:

基本上,您只需将损坏的.git/目录替换为干净的目录即可。

假设您的项目的git损坏了以下目录:projects/corrupt_git/

  1. cp projects/corrupt_git projects/backup-(可选)进行备份
  2. git clone [repo URL] projects/clean_git-这样您就可以获得projects/clean_git
  3. rm -rf corrupt_git/.git/-删除损坏的.git文件夹
  4. mv clean_git/.git/ corrupt_git/-将干净的git移至corrupt_git/.git
  5. git status中的{li} projects/corrupt_git-确保其有效

答案 16 :(得分:0)

在我的虚拟机崩溃并且 git 文件损坏后,我遇到了同样的问题。

第一步,从项目的根文件夹。

$ find .git/objects -type f -empty -delete

然后修剪和提取...

$ git prune
$ git fetch --all --prune

还有一些回滚,它开始工作了。

答案 17 :(得分:0)

将所有内容(在包含.git的文件夹中)复制到备份,然后删除所有内容并重新启动。确保你有git遥控器方便:

git remote -v
 origin git@github.com:rwldrn/idiomatic.js.git (fetch)
 origin git@github.com:rwldrn/idiomatic.js.git (push)

然后

mkdir mygitfolder.backup
cp mygitfolder/* mygitfolder.backup/
cd mygitfolder
rm -r * .git*
git init
git remote add origin git@github.com:rwldrn/idiomatic.js.git

然后手动合并任何新文件,并尝试打开计算机。

答案 18 :(得分:0)

我偶尔会遇到这个问题,这是由于git操作期间的计算机或VM操作问题引起的。

对我来说最好的解决方案是删除git对象和所有相关的ref git文件:

sudo rm -r .git / objects / * .git / refs / heads / * .git / refs / remotes / * .git / refs / stash .git / refs / tags / *

然后拉回购:

git pull

这以最简单的方式为我解决了所有问题,而无需冒我的源代码或再次克隆存储库的风险。

答案 19 :(得分:0)

实际上我有同样的问题。 尝试之前,请先获得代码副本。

我刚刚做了 git reset HEAD~

我的上一次提交被撤消 然后我再次提交,问题解决了!

答案 20 :(得分:0)

我也经常发生这种情况。确切情况下尚未制定协议,但是我怀疑只要我的虚拟机“意外地”存在,它就会发生。如果关闭VM窗口(我正在使用Ubuntu 18.04)并再次启动,则一切总是正常(?)。但是,如果关闭笔记本电脑(Windows主机系统)后,VM窗口仍处于打开状态,那么我会经常遇到此问题。

关于此处给出的所有答案:

  1. 谢谢-它们非常有用;我通常会保存代码的本地副本,从远程还原存储库,然后将备份副本移回本地文件夹。

  2. 由于根本的问题实际上不是git问题,而是VM和/或Linux问题,我想知道是否应该有办法解决症状而不是解决问题?这种错误是否表示某些文件系统更改在任何合理的时间内没有“应用”,而是仅被缓存了? (例如,参见https://unix.stackexchange.com/questions/464184/are-file-edits-in-linux-directly-saved-into-disk)-对我来说,似乎虚拟Linux计算机没有足够频繁地同步其内容。这是Oracle的VirtualBox(否则效果很好)还是来宾文件系统的问题,还是我们都忽略的某些设置的问题,超出了我的专业知识。但是,如果有人可以阐明这一点,我会很高兴。

答案 21 :(得分:0)

从一个干净的分支中检出主人后出现同样的问题。 过了一会儿,我在master中识别了很多修改过的文件。从一个干净的分支切换后,我不知道他们为什么一直在那里。无论如何,因为修改后的文件对我来说毫无意义,我只是把它们藏起来,错误就消失了。

git:(master) git stash

答案 22 :(得分:0)

我修复了我的git错误:目标文件为空,原因是:

  1. 保存自上次成功提交/推送以来我编辑的所有文件的副本,
  2. 删除并重新克隆我的存储库,
  3. 用我编辑的文件替换旧文件。

希望这会有所帮助。

答案 23 :(得分:0)

如果您在github.com上的公共仓库工作正常,但您的本地仓库已损坏,这是一种解决问题的方法。请注意,您将放弃在本地仓库中完成的所有提交。

好吧,所以我在本地有一个repo给了我object empty error和github.com上的同一个repo,但是没有这个错误。所以我只是克隆了从github工作的repo,然后从corrupt repo(.git文件夹除外)中复制了所有内容,并将克隆的repo粘贴到正常工作中。

这可能不是一个实用的解决方案(因为您删除了本地提交),但是,您维护代码和修复版本控制。

在应用此方法之前,请记得备份。

答案 24 :(得分:0)

我和我的同事已经多次遇到同样的问题,为了解决这个问题,我们只需执行下面描述的步骤。它不是最优雅的解决方案,但它可以在不丢失数据的情况下运行。

  1. 重命名当前工作目录。 (本例为old_project)。
  2. 使用git clone在新目录中克隆存储库。
  3. 在命令行上,将工作目录更改为新创建的项目,然后切换到您正在处理的分支。
  4. old_project内的所有文件和目录(.git目录除外)复制到新创建的项目目录中。
  5. 检查您的工作树状态(请注意,还有比您预期的更多更改),然后提交更改。
  6. 我希望它有所帮助...

答案 25 :(得分:0)

提交您的更改(如果有),然后只提交git reset --hard

答案 26 :(得分:0)

如果您有OLD备份并且匆忙:

为您当前的git-broken项目路径制作新的备份。

  1. 将您的.git移至垃圾箱(永不删除)
  2. 从旧备份中复制.git
  3. git pull(会产生合并冲突)
  4. 将您的所有来源(您在git中放置的所有内容)移至垃圾箱:./src(永不删除)
  5. 。来自新备份的所有来源(你在git中放置的所有内容)
  6. 接受所有&#34;合并&#34;在git gui,推动......拍拍你的手!

答案 27 :(得分:0)

上面介绍的十二步解决方案也帮助我摆脱了困境。谢谢。关键步骤是进入:

git fsck --full 

并删除所有空对象

rm .git/objects/...

然后得到鞭子的两行:

tail -n 2 .git/logs/refs/heads/master

返回值

git update-ref HEAD ...

此时我没有更多错误,所以我备份了我最近的文件。然后做一个git pull然后是git push。将我的备份复制到我的git存储库文件并执行另一个git push。这让我感到最新。

答案 28 :(得分:-4)

如果您不关心保留历史提交,请运行

  

rm -r .git

然后对有关删除写保护文件的任何问题回答“是”。 问题在一分钟内解决了。