列出git存储库中任何分支中曾经存在的所有文件

列出git存储库中任何分支中曾经存在的所有文件,git,Git,我有一些我正在寻找的文件,但我不知道它们在我的git存储库中的位置(在空间和时间上)。我还推测,这些文件及其所在的分支机构都可能被删除 如何列出整个git存储库中存在的所有文件?我知道删除的文件/分支很可能已经被垃圾收集了,好吧,除了祈祷它没有发生之外,没有什么可以做的 谢谢 这有点疯狂,但它可能会满足您的需求: #!/bin/sh content="$@" for hash in $({ git rev-list --objects --all git rev-list -

我有一些我正在寻找的文件,但我不知道它们在我的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
我试图让每个blob都完全可访问,并在每个blob中查找特定的内容

您将能够对每个生成的哈希值执行
git cat file-p hash
,并可能找到丢失的文件


另一方面,我很惊讶没有看到任何好的方法来列出存储库中所有可用的对象。我想把所有东西都拆下来,然后从那里开始,这可能也是一个更好的解决方案


资源:

相关主题: