恢复通过强制推送丢失的覆盖git提交

时间:2013-06-05 02:39:32

标签: git

我正在远程服务器上写一个README.md文件并完成了那个文件,但是我意外地使用git push origin master强制推送到远程服务器,现在README.md已经消失了

有没有办法可以检索该提交?我写了一个很长的README.md文件,真的想知道我是否可以把它拿回来:(

我正在查看git fsck,但找不到我在github.com上从远程服务器提交的README.md

2 个答案:

答案 0 :(得分:6)

如果它存在于某个工作副本中,请转到该存储库并使用git reflog查找包含它的修订版,并使用git checkout转到该修订版(在任何分支之外)。然后,您可以将文件复制到任何您想要的位置。

如果服务器是裸的,它可能仍然是服务器上的一个对象,但没有任何类型的git fetch会将其复制到任何其他仓库,因为没有对它的引用。在这种情况下,您需要访问裸仓库才能直接运行git fsck

答案 1 :(得分:6)

在github的公共活动中,您可能会看到以下内容:

XXX pushed to master at XX/XXX 
d506bb1 Update README.md. 

这里d506bb1是你丢失的提交。