git踩坑:本地与远程代码不一致时执行git pull --rebase origin master后本地代码丢失的解决办法

今天在push代码到gitee仓库时,出现以下错误

经过查阅资料后发现是本地仓库代码与远程仓库代码不一致导致无法提交,我这里的情况是:远程仓库中具有.gitignore和LICENSE这两个文件,但本地没有这两个文件,需要先从远程仓库pull这两个文件到本地之后,才能将本地的代码push到远程仓库。

网络上有一种解决方法是在本地仓库的路径下执行git pull --rebase origin master命令,执行之后上述两个文件成功被保存到本地仓库中。

但是新的问题出现了,我的本地仓库只剩下这两个文件,其他代码全部丢失。Oh my god!

好在网上有大神,我找到了解决方法。

首先找到下图中的文件,打开HEAD。

在HEAD文件中可以看到最近的提交记录

此时我们需找到在执行rebase 操作之前的id,如图所示为8a36ca1f2ed2baf1848302951721d355ce3a0f8e。 然后在本地仓库路径下执行git reset --hard + id 就 可以撤回之前的git pull --rebase origin master操作,这样原来被删除的代码就回来了。

正确的办法是:

执行git pull origin master --allow-unrelated-histories命令拉取远程仓库的文件到本地仓库,然后再重新执行push origin master操作。

AnonyEast

一个爱折腾的技术萌新

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐