5

*.pack ファイルを含む git リポジトリがあります。ルーズ オブジェクトはありません。質問とは関係のない何らかの理由で、すべての *.idx ファイルが失われます。どうすればそれらを復元できますか?

ありがとう

4

2 に答える 2

8

ツリーの一番上から、次を実行してみてください。

git index-pack .git/objects/pack/PACK_FILENAME

PACK_FILENAME、パック ファイルの名前です。たとえば、これを試したリポジトリには次のパスがありました。

.git/objects/pack/pack-7e0af787b3e455fac722264ff05dd0bae7d71625.pack

パックファイルごとにこれを行う必要があり、リポジトリは再び正常に機能するはずです。

于 2013-06-25T23:55:20.107 に答える
1

注: " git index-pack --stdin" には既存のリポジトリへのアクセスが必要ですが、packfile に対応するファイルgit index-pack file.packを生成するには" " は必要ありません。.idx

つまり、Git 2.12 (2017 年第 1 四半期) 以降、idxテスト目的で Git リポジトリの外部からファイルを復元することもできます。

commit 29401e1commit a3c45d1commit 7176a31commit de95302 (2016 年 12 月 16 日) by Jeff King ( peff)を参照してください。 ( 2016 年 12 月 21 日、コミット 49d45deJunio C Hamanoによってマージされました)gitster

index-pack: リポジトリにないときは衝突チェックをスキップします

git index-pack path/to/foo.packリポジトリの外で" " を実行して、インデックス ファイルを生成したり、内容を確認したりすることができます。
明らかに衝突するオブジェクトがないため、衝突チェックを行う意味はありません。

于 2016-12-28T20:39:54.547 に答える