git命令删除了我的东西

时间:2017-09-27 15:32:53

标签: git github

我真的是github和git的初学者,我的github上有一个存储库,带有一些基本代码,最近我安装了一个新的操作系统备份我的应用程序代码并添加了很多东西,当我尝试将更改推送到github,我收到了一个错误:

 [rejected]        master -> master (fetch first)
error: failed to push some refs to 'root@....git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

我在线搜索并找到了我执行的命令:

git pull --rebase

这引起了另一个问题,我搜索并找到了另外一个我执行的命令

git pull origin branchname --allow-unrelated-histories

显示另一个错误并找到我执行的另一个答案:

git fetch origin
git reset --hard origin/master
git pull

这个删除了我在本地计算机上所做的所有更改,并将其替换为我在远程(github)存储库中的基本代码

对不起家伙我知道无知不是没有保佑但是现在我问是否有办法让我的代码回来?

3 个答案:

答案 0 :(得分:5)

您使用HEAD以某种方式弄乱了分支的reset --hard。使用reflog查找您决定重新绑定之前的最后一次提交,然后重置为该提交。

git reflog -g

# find the commit id which you want to return to using the commit message
# It might contain two commit ids for the same commit message 
# if rebase was successful. Choose the older one.

git checkout -b temp_branch
git reset --hard <found_commit_id>

答案 1 :(得分:0)

  

对不起家伙我知道无知不是没有保佑但是现在我问是否有办法让我的代码回来?

好吧,从备份中恢复它。如果您没有,那么所有未提交的更改很可能都已消失。不一定是好的,最后的机会是立即关闭机器,将硬盘放到其他机器上,以只读方式安装磁盘并尝试使用&#34;取消删除&#34;工具类型。

  

git命令删除了我的东西

没有。你做到了。通过做事而不了解将会产生什么结果。很高兴没有人发布rm -rf /作为你复制和粘贴的终极解决方案......我相信你学会了总是做一个副本以防出现问题。并盲目地执行未知命令。

答案 2 :(得分:0)

hspandher的回答是对的,但我想补充更多信息。

您也可以在git log中看到提交ID,依赖于分支机构发生的事情。

第一个错误也是正常的合并错误,

git pull --rebase

尝试从上游提取更改,然后将您的更改重新绑定到上游分支的HEAD,基本上看起来您将从上次提交开始工作,但在此期间可能会发生冲突这个。它有点像ff合并,但你拉远程主机。

看看这个:enter image description here

现在,如果您在团队中工作,请询问他们的合并策略是什么,因为回购之间可能存在巨大差异。也只是一个经验法则,如果你和别人一起工作,总是使用自己的分支,你总是可以将它合并回来,但是在原点上搞砸遥控器可以给别人带来一点乐趣。