gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 13:14:46 26 4
gpt4 key购买 nike

我有一些正在寻找的文件,但我不知道它们在我的 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 并可能找到您丢失的文件。


附带说明一下,我很惊讶没有看到任何好的方法来绝对列出存储库中可用的每个对象。我正在考虑打开所有东西并从那里开始,这也可能是一个更好的解决方案。


资源:

相关主题:

关于git - 列出 git 存储库中任何分支中曾经存在的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14442961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com