3

我负责公司的 Git 存储库。我们使用 Gitosis 来管理 Git 存储库。我通过 克隆了一个存储库git clone git@gitserver:repo,但根本找不到一些提交。git show <commit>返回fatal: bad object f723e2ea9af0e380158d90c36e21a60991760d31

对象如下,只有一个包文件:

$ tree .git/objects/
.git/objects/
|-- info
|   `-- packs
`-- pack
    |-- pack-4d930eca23ad902fc4a4809d01b86c4217b0b262.idx
    `-- pack-4d930eca23ad902fc4a4809d01b86c4217b0b262.pack

2 directories, 3 files

我在包文件中找不到提交:

$ git verify-pack -v .git/objects/pack/pack-4d930eca23ad902fc4a4809d01b86c4217b0b262.idx | grep f723e2e
$

当我使用本地文件系统克隆 Git 服务器上的存储库时,提交就在那里并且可以签出。

我可以找到提交(第一个):

$ ls .git/objects/f7/
23e2ea9af0e380158d90c36e21a60991760d31  84f33d44863cbe6ca4ae03cddcc673048f04bb
3b1ef7031d634b4aa443925dd29cc779356caa  9807359a1c65f312a1d4642e5191416443e20b
6fbd26fccc5a8e89f221c9196eb8083e73632e

通过 SSH 克隆时,我的用户如何获得所有提交?

4

1 回答 1

1

由于您可以在服务器上进行克隆,请尝试使用git bundle,它将为您提供一个文件。

然后将该文件复制到本地计算机上,并从该捆绑包中克隆。

如果可以,您可以在“捆绑”克隆之后检查:

  • 将远程添加回 gitosis 存储库
  • 从所述上游 gitosis repo 推/拉。

(注意:当您在损坏的 repo 上发现提交时,请检查它们的大小是否为 0,然后尝试删除它,或者从另一个克隆中恢复它

于 2013-02-18T06:37:52.263 回答