6

探しているファイルがいくつかありますが、それらがgitリポジトリのどこにあるのか(空間と時間の両方で)わかりません。また、ファイルとそれらが存在するブランチの両方が削除される可能性があると推測します。

gitリポジトリ全体に存在するすべてのファイルを一覧表示するにはどうすればよいですか?削除されたファイル/ブランチはすでにガベージコレクションされている可能性があることを私は知っています、そしてまあ、それがまだ起こらなかったことを祈る以外にそれについて何もすることはありません。

ありがとう!

4

1 に答える 1

3

これは少しクレイジーですが、あなたが望むことをするかもしれません:

#!/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生成された各ハッシュに対してを実行できるようになり、失われたファイルが見つかる可能性があります。


ちなみに、リポジトリで利用可能なすべてのオブジェクトを完全にリストする良い方法が見当たらないことに驚いています。私はすべてを開梱してそこから行くことを考えていました、それもより良い解決策かもしれません。


資力:

関連トピック:

于 2013-01-21T17:43:45.367 に答える