严重损坏的git存储库

严重损坏的git存储库,git,Git,接下来的内容很长,所以这里有一个简单的问题:我有一个严重损坏的repo,我有备份,我想回到稳定状态,这样我就可以恢复文件(如果必须的话,手动)。我将整个存储库复制到另一个文件夹中,并列出了我所做的更改,因此,如果一切都不顺利,我可以轻松地进行手动传输 我首先尝试提交代码并得到: error: invalid object 100644 e9fede64cd0e6499fb3740d81d45d14768b27ffb for 'app/views/free_emp_opinions/new.htm

接下来的内容很长,所以这里有一个简单的问题:我有一个严重损坏的repo,我有备份,我想回到稳定状态,这样我就可以恢复文件(如果必须的话,手动)。我将整个存储库复制到另一个文件夹中,并列出了我所做的更改,因此,如果一切都不顺利,我可以轻松地进行手动传输

我首先尝试提交代码并得到:

error: invalid object 100644 e9fede64cd0e6499fb3740d81d45d14768b27ffb for 'app/views/free_emp_opinions/new.html.erb'
error: invalid object 100644 e9fede64cd0e6499fb3740d81d45d14768b27ffb for 'app/views/free_emp_opinions/new.html.erb'
error: Error building trees
我使用备份手动替换了该文件,然后得到:

error: invalid object 100644 e6317da4299554ce7eb39e9baa0b49d4b30743db for 'app/views/link_groups/show.html.erb'
error: invalid object 100644 e6317da4299554ce7eb39e9baa0b49d4b30743db for 'app/views/link_groups/show.html.erb'
error: Error building trees
调试开始:

git status
fatal: unable to read e9fede64cd0e6499fb3740d81d45d14768b27ffb

git prune
error: Could not read ef528d9533bb296f0ff528551527b787cfd3c888
fatal: bad tree object ef528d9533bb296f0ff528551527b787cfd3c888

git reset --hard
error: unable to read sha1 file of app/views/free_emp_opinions/new.html.erb (e9fede64cd0e6499fb3740d81d45d14768b27ffb)
error: unable to read sha1 file of app/views/link_groups/show.html.erb (e6317da4299554ce7eb39e9baa0b49d4b30743db)
fatal: Could not reset index file to revision 'HEAD'.
现在我运行:

git fsck --full
Checking object directories: 100% (256/256), done.
Checking objects: 100% (26833/26833), done.
broken link from    tree 0a6b00e8d1937c3e31c5e75d9de939c97adc205f
              to    blob e9fede64cd0e6499fb3740d81d45d14768b27ffb
broken link from    tree 367acd2750e703d44cb76403ea74c69d02130e09
              to    tree ef528d9533bb296f0ff528551527b787cfd3c888
broken link from    tree 0b7c7ac1d8475b355d2f382d1220dd0a53dc83ac
              to    blob e02d8b0123c0891206f9fb9f43c1ec7b3e32495b
broken link from    tree 2c4b398e161573622d6d50b96d31084209325569
              to    tree dc1eace38a6510ef25cb7d0b5debf5216fccd948
broken link from    tree 2c4b398e161573622d6d50b96d31084209325569
              to    tree e2dca328dac5f632b1c768e6e52767aef11f0266
broken link from    tree 479d84ae8cd3a0bf0ff8f28da4b41f9fe3cd793c
              to    blob e70452a6561eabbc568e5e23acf30ea84dd4fba4
broken link from    tree 49cdccd88608729674cad489d1a93f4a210f96ca
              to    tree e4172bffc23b279fd6e98b5831179bac26109ebb
broken link from  commit 4310cd9376a2f633ac26b29e90c472cf14f60765
              to    tree e3071ddca12fa64996ff0ab2cf7b7511e57c42c1
dangling blob 1a011db92445954272ddd5529316023fbbe607e4
dangling blob 5201c769001b1032c052d2fa81831ae9f6c525dd
dangling blob 7c023ab3a58f916f7871b525c23233e8386fa1a8
dangling blob 5d03033fee1d65ff431548c8b2a678ea250dbb90
dangling commit c5030fe567bc734d2c7381b24d196d2d68e8cfa8
dangling blob b504169a1d1cffc2646eb4ba75d0e65df2d4932f
missing blob e70452a6561eabbc568e5e23acf30ea84dd4fba4
dangling blob d6058a10a39afa230991fd633482ac0e768ea383
dangling blob 4606c7d01b21621c70393beb0000c174ddf038dc
missing tree e3071ddca12fa64996ff0ab2cf7b7511e57c42c1
dangling blob af1111e218aba1a936c20a69b35a529efa8d959a
dangling blob 59126b4617ac8cae1cabfd209396a276c796724a
dangling blob ea12b047dc5c8cd0ae5b6f446b09a49d2f066902
...another 60+ issues...

git reset --hard HEAD@{1}
error: unable to read sha1 file of app/views/free_emp_opinions/new.html.erb (e9fede64cd0e6499fb3740d81d45d14768b27ffb)
error: unable to read sha1 file of app/views/link_groups/show.html.erb (e6317da4299554ce7eb39e9baa0b49d4b30743db)
fatal: Could not reset index file to revision 'HEAD@{1}'.
我尝试了其他人提出的一些建议:

git log | head
commit e89d926275c25e1ed859a5c00c870a69cf857ce0
Author: sscirrus <***>
Date:   Wed Mar 18 16:44:04 2015 -0400
Tweak: change emphome job rightmost readout from date first posted to date of last activity

commit a0d97a6a5308a2b18504fa3394fea7efa43c06b0
Author: sscirrus <***>
Date:   Wed Mar 18 13:25:49 2015 -0400    

当然,
git fsck
返回相同的错误。

由于存储库中的错误数量太多,并且完全无法运行诸如
git gc
git status
之类的命令,我执行了以下操作:

恢复之前
  • 将总结已提交和未提交更改的所有数据从gitk复制到单独的文本文件中
  • 打开了两份gitk(出于安全考虑),并将其留作将来参考
恢复
  • 使用Time Machine(OS X)查找将响应
    git gc
    (大约一周前)的最新备份
  • 备份了当前损坏的存储库
  • 在当前回购上还原了干净的备份
  • 使用文本文件在备份顶部手动复制/粘贴更改
结果
  • 完全干净的git回购更新到检测到腐败之前的状态
我希望这对你有帮助。

我遇到了同样的问题

并删除整个git repo,然后再次运行“repo sync”

同步工作树:91%(817/897)错误:无法读取AdaptiveStudio-linux.gtk.x86_64.zip(9406a46cf9580567faf3f8bdf69abfa7cfeda364)的sha1文件
错误:无法读取adaptiveStudioScript.sh(fe8b65c44d9b8f24f471a45823a4d71654bf9661)的sha1文件
首先,你必须弄清楚回购协议在哪里

rm -rfv AdaptiveStudio.git
repo sync -f -c -j8

您可以尝试提取其中一个备份,并修改
.git/objects/info/alternates
以从损坏的repo中引用它。@AndrewC我转到
.git/objects/info
,没有“alternates”,只有“packs”。只需创建该文件并将路径添加到备份中即可。Reference是不是远程存储库也损坏了?@Makoto-谢天谢地不是。我们这些在Linux机器上没有此功能的人呢?@Makoto我建议使用在Linux上运行的健壮备份解决方案,最好是提供每日或每小时备份的备份。@Makoto还注意到“查找最新备份”花费了相当多的时间-我必须从不同的日期恢复回购,直到我选择了正确的备份。
rm -rfv AdaptiveStudio.git
repo sync -f -c -j8