我的存储库中有一个文件,我意外地将其重置为git reset --hard
。该文件仍在存储库中,但由于未提交更改,我无法访问它。
我发现了一些相关的问题:
然而有了这些我只发现了一些旧的丢失的东西,但不是最近的那个。有没有办法为这个特定文件提供grep
历史记录?
编辑:有什么可以帮助我知道丢失文件的内容。也许如果我可以grep
悬挂blob /提交这个内容?
答案 0 :(得分:0)
Git会将对象存储在其数据库中。您可以通过执行以下操作找到该文件:
find .git/objects/ -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort
您应该按日期获取对象列表。每个条目都以sha结尾。取每个sha(即d670460b4b4aece5915caf5c68d12f560a9fe3e4),然后输入:
git show <the sha>
在找到正确的文件之前,您可能需要尝试几个。
答案 1 :(得分:0)
你可以做到
git fsck --full --cache --dangling
并查找dangling blob
条目 - 其中一条应该是您丢失的文件。
你可以尝试grep(这里我们选择一组更大的未引用对象,只是为了确定):
git fsck --unreachable --no-reflogs --full 2>/dev/null | awk '$2 == "blob" {print $3}' | xargs git grep -a your-search-string
它将打印找到的blob的SHA-1以及匹配的行。
获得哈希后,使用git show <hash>
查看文件。