3

私は会社のGitリポジトリの世話をしています。Gitosisを使用してGitリポジトリを管理します。を介して1つのリポジトリのクローンを作成git clone git@gitserver:repoしましたが、一部のコミットがまったく見つかりません。git show <commit>を返しますfatal: bad object f723e2ea9af0e380158d90c36e21a60991760d31

オブジェクトは以下のとおりです。パックファイルは1つだけです。

$ 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

サーバー上でクローンを作成できるため、 を試してください。これにより、 1 つのgit bundleファイルが得られます。

次に、そのファイルをローカル マシンにコピーし、そのバンドルからクローンを作成します。

可能であれば、その「バンドル」クローンの後、確認できます。

  • リモートを gitosis リポジトリに追加します
  • 上記の上流の gitosis レポからプッシュ/プルします。

(注: 破損したレポでコミットを見つけた場合は、サイズが 0 かどうかを確認し、削除するか別のクローンから復元してください)

于 2013-02-18T06:37:52.263 に答える