修复丢失的提交

时间:2013-05-24 23:56:41

标签: git tortoisegit

我是Git的新手。我们使用Bonobo Git Server作为后端,使用TortoiseGit作为客户端。当我拉动时,我在TortoiseGit中得到以下内容 -

POST git-upload-pack (328 bytes)
fatal: protocol error: bad line length character: <!DO
fatal: write error: Invalid argument


git did not exit cleanly (exit code 1)

Bonobo的错误日志说 -

   GitSharp.Core.Exceptions.MissingObjectException: Missing commit commit 903228ffc07ea920fd944c6fcdd5d8d5ef852ff1 0 ------

我在903228ffc07ea920fd944c6fcdd5d8d5ef852ff1文件夹下的某个开发人员计算机上找到了丢失的.git\objects文件。如何将其放在服务器上并让repo再次运行?请帮忙。

我在另一个线程上读到我需要repack并将其推送到服务器?我怎么做?我是Git的新手。我正在使用Windows。

1 个答案:

答案 0 :(得分:0)

首先备份损坏的存储库,以防您的情况变得更糟。

然后将好文件复制到服务器上的git/objects/90/3228...

有关详细信息,请参阅Recovering from repository corruption

如果有很多丢失的物品,你确实可以将它们发送到一个包中:

  1. 在服务器上,找到缺少对象的SHA-1总和

    git fsck | grep missing | grep -o '[0-9a-f]\{40\}' > missing
    
  2. 在开发者的计算机上,打包丢失的对象

    git pack-objects --stdout < missing > objects.pack
    
  3. 在服务器上,解压缩包文件

    git unpack-objects < objects.pack