列出在Git仓库的任何分支中曾经存在过的所有文件。

6
我有一些文件,但我不知道它们在我的git仓库中的位置(无论是时间还是空间)。我也猜测这些文件和它们所在的分支可能已被删除。
如何列出整个git仓库中存在的每个文件?我知道已删除的文件/分支可能已经被垃圾回收,那么,除了祈祷它还没有发生之外,我们无法做任何事情。
谢谢!
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

我试图获取所有可访问的 blob,并在每个 blob 中查找特定内容。
您可以对生成的哈希值执行“git cat-file -p hash”命令,可能会找到您丢失的文件。

顺便说一下,我很惊讶没有看到任何列出存储库中可用的所有对象的好方法。我在考虑解压缩所有内容并从那里开始,这可能也是一个更好的解决方案。


资源:

相关主题:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接