探しているファイルがいくつかありますが、それらがgitリポジトリのどこにあるのか(空間と時間の両方で)わかりません。また、ファイルとそれらが存在するブランチの両方が削除される可能性があると推測します。
gitリポジトリ全体に存在するすべてのファイルを一覧表示するにはどうすればよいですか?削除されたファイル/ブランチはすでにガベージコレクションされている可能性があることを私は知っています、そしてまあ、それがまだ起こらなかったことを祈る以外にそれについて何もすることはありません。
ありがとう!
探しているファイルがいくつかありますが、それらがgitリポジトリのどこにあるのか(空間と時間の両方で)わかりません。また、ファイルとそれらが存在するブランチの両方が削除される可能性があると推測します。
gitリポジトリ全体に存在するすべてのファイルを一覧表示するにはどうすればよいですか?削除されたファイル/ブランチはすでにガベージコレクションされている可能性があることを私は知っています、そしてまあ、それがまだ起こらなかったことを祈る以外にそれについて何もすることはありません。
ありがとう!
これは少しクレイジーですが、あなたが望むことをするかもしれません:
#!/bin/sh
content="$@"
for hash in $({
git rev-list --objects --all
git rev-list --objects -g --no-walk --all
git rev-list --objects --no-walk \
$(git fsck --unreachable |
grep '^unreachable commit' |
cut -d' ' -f3)
git fsck --unreachable | grep "^unreachable blob" | cut -d' ' -f3
} 2> /dev/null | cut -d' ' -f1 | sort | uniq); do
if git cat-file blob $hash 2> /dev/null | grep -i $content > /dev/null ; then
echo $hash
fi
done
私は絶対にすべてのブロブにアクセスできるようにし、それぞれの特定のコンテンツを探しました。
git cat-file -p hash
生成された各ハッシュに対してを実行できるようになり、失われたファイルが見つかる可能性があります。
ちなみに、リポジトリで利用可能なすべてのオブジェクトを完全にリストする良い方法が見当たらないことに驚いています。私はすべてを開梱してそこから行くことを考えていました、それもより良い解決策かもしれません。
資力:
関連トピック: