我把我的本地仓库放在github上,在github仓库中,我通过点击“我们推荐一个README文件链接”创建了README文件,在里面写了详细的内容并提交了,但是我没有把这个文件克隆到我的本地仓库中,最近我做了一些修改,并将它们推送到github仓库。今天我注意到README文件丢失了。我检查了我的提交,但没有找到。I don’我在那里找不到任何与README相关的东西。
我正在使用Eclipse egit插件与github存储库进行交互。我确实在Eclipse“团队”菜单中单击了“同步工作区”,只是为了检查它做了什么-这是在我注意到文件丢失之前。
是否有任何方式来检索我的README.md文件?请让我知道.
我的存储库:https://github.com/raghavam/d-sparq
2条答案
按热度按时间62o28rlo1#
从评论来看,原发帖人是这样说的:
是的,我在Egit中勾选了一个名为“force push”的选项,因为如果没有这个选项,它会给我一个错误。
但是,我还没有做过fetch或pull --我通常不这样做,因为我是唯一一个使用该repo的人,所以我当前的本地副本将是最新的。
是的,这听起来确实像是你最终强制推送了你的repo的本地副本,然后覆盖了你在GitHub上对README文件所做的更改,特别是因为你说你从来没有获取或拉取。
从不抓取或拉取的问题是,你描述了通过GitHub的Web界面编辑和提交README文件:
我通过点击“我们推荐一个README文件链接”创建了README文件。我在里面写了一个详细的内容并提交了它。但是我没有将这个文件克隆到我的本地仓库中。
所以你的远程仓库有你的本地仓库没有的提交。这可能是当你试图推送时得到的错误消息,沿着这些路线,对吗?:
这条消息基本上意味着你需要merge the remote commits with the work in your local repository。但是你没有这样做,而是通过使用force-push将这些提交完全覆盖到README文件中(你远程完成的),如果你不真正理解它的作用,你就不应该这样做。
使用force-push时要非常非常小心。只有当你理解了它的作用并且确定使用它是你想做的事情时才使用它,因为这是Git初学者最常见的失败方式之一。
恢复README
由于您从未从存储库中获取或拉取过该文件,因此该文件现在基本上是不可恢复的,因为它从未下载到您的本地远程。您需要重新开始。
fhity93d2#
它不是不可恢复的,它有可能存在于远程仓库
reflog
上。通常你不能访问远程仓库reflog,但github有events API。第一个命令让你找到丢失的远程提交的sha。第二个命令让你在那个提交上创建一个分支。然后简单地获取本地repo上的所有更改,新的分支应该会出现。之后简单地合并那个分支或cherry-pick提交并推送。