我删除了本地git存储库并重制了本地git存储库。之后 我使用下面的命令
将一个项目推送到远程存储库git push -f origin master
但是当我在Gihub上检查我的项目时,我发现除了一个项目,我只是从本地存储库中推出了什么。 所有现有项目都消失了。它像主分支被覆盖了。 我知道在做“推”之前我应该先取。我甚至没有克隆过 还有什么方法可以恢复吗? 我想把它转回到之前的Gihub主版本。
答案 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
将包含您在本地对存储库所做的所有更改