*.pack ファイルを含む git リポジトリがあります。ルーズ オブジェクトはありません。質問とは関係のない何らかの理由で、すべての *.idx ファイルが失われます。どうすればそれらを復元できますか?
ありがとう
ツリーの一番上から、次を実行してみてください。
git index-pack .git/objects/pack/PACK_FILENAME
はPACK_FILENAME
、パック ファイルの名前です。たとえば、これを試したリポジトリには次のパスがありました。
.git/objects/pack/pack-7e0af787b3e455fac722264ff05dd0bae7d71625.pack
パックファイルごとにこれを行う必要があり、リポジトリは再び正常に機能するはずです。
注: " git index-pack --stdin
" には既存のリポジトリへのアクセスが必要ですが、packfile に対応するファイルgit index-pack file.pack
を生成するには" " は必要ありません。.idx
つまり、Git 2.12 (2017 年第 1 四半期) 以降、idx
テスト目的で Git リポジトリの外部からファイルを復元することもできます。
commit 29401e1、commit a3c45d1、commit 7176a31、commit de95302 (2016 年 12 月 16 日) by Jeff King ( peff
)を参照してください。
( 2016 年 12 月 21 日、コミット 49d45deでJunio C Hamanoによってマージされました)gitster
index-pack: リポジトリにないときは衝突チェックをスキップします
git index-pack path/to/foo.pack
リポジトリの外で" " を実行して、インデックス ファイルを生成したり、内容を確認したりすることができます。
明らかに衝突するオブジェクトがないため、衝突チェックを行う意味はありません。