情况就是这样:我在我的git存储库中丢失了一些工作,这项工作曾经被提交,但现在已经埋没在我的历史中,可能无法通过'git log --all'<无法到达的地方/ strong>即可。 我唯一记得的是一些不同的字符串,可以在此时查明属于我工作的文件。
我有一个解决方案......但是很长,你有更好的解决方案吗?
这是我的解决方案:
我设法通过批处理命令找到我的提交SHA1:
答案 0 :(得分:7)
如果可以从某个ref访问提交,那么最佳解决方案肯定是pickaxe搜索:git log -Sstring --all
。
如果无法访问,那么你是对的,你将不得不进行一些挖掘。如果你认为你有遍布各处的悬空提交,最简单的方法就是使用git fsck --lost-found
找到你的悬空提交。 (它还会打印悬空blob。)然后,您可以在每个SHA1上使用git grep <commit>
,并找到您的字符串。
另一方面,如果你认为你有一些被修剪的候选分支,并且你的目标将在其中一个上,我会使用git reflog show
回顾你的reflogs,找到提交在他们的提示,并重新创建它们,所以你可以做git log -Sstring <branches> ^master
。