如何恢复github存储库

时间:2015-12-31 12:59:41

标签: git github

我删除了本地git存储库并重制了本地git存储库。之后 我使用下面的命令

将一个项目推送到远程存储库
git push -f origin master

但是当我在Gihub上检查我的项目时,我发现除了一个项目,我只是从本地存储库中推出了什么。 所有现有项目都消失了。它像主分支被覆盖了。 我知道在做“推”之前我应该​​先取。我甚至没有克隆过 还有什么方法可以恢复吗? 我想把它转回到之前的Gihub主版本。

4 个答案:

答案 0 :(得分:1)

通过使用-f标志,您告诉Git覆盖任何服务器端更改。

因为您正在使用GitHub,所以可以从GitHub检索先前的提交。我找到了这篇博文:

https://objectpartners.com/2014/02/11/recovering-a-commit-from-githubs-reflog/

我很快就会尝试这个,我不知道GitHub会多久保存停滞的提交。

答案 1 :(得分:0)

你没有简单地推进掌握,你推动了-f标志(--force),这将绕过任何冲突检查。除非你真的知道自己在做什么,否则你不应该强行推动分支。

用于推送本地主服务器的安全命令是(注意没有-f标志):

git push origin master

由于GitHub不会公开备份,如果您使用--force推送覆盖某个分支,则无法恢复它。

你唯一的机会是recover the deleted branch locally,一旦恢复,再次推送给GitHub。如果您还在本地删除了您的仓库,则无法恢复它。

答案 2 :(得分:0)

如果您知道先前github主版本上次提交的哈希值,您可以在本地执行git reset --hard {hash}后跟git push -f origin master强制将其推回到github,但这只会在你仍然拥有所有先前提交的git存储库的本地副本。

否则,-f的{​​{1}}参数意味着强制推送,尽管有任何警告。你永远不应该这样做,除非你完全确定你在做什么。

唯一可能的恢复机会是尝试以下操作,当且仅当您知道先前github主服务器上次提交的哈希时。在Web浏览器中,导航至:

git push

从那里,您可以使用github的Web UI将该提交的拉取请求发回https://github.com/{username}/{repository}/commit/{hash} 分支。

答案 3 :(得分:0)

如果您使用的是同一台计算机,则可以在强制推送之前尝试使用git reflog签出提交。

reflog将包含您在本地对存储库所做的所有更改