2017-09-27 115 views
1

我真的是github和git的初学者,我在一个基本代码的github上有一个仓库,最近我安装了一个新的操作系统作为备份我的应用程序代码,并添加了很多内容它,当我试图推动修改github上,我得到了一个错误:git命令删除我的东西

[rejected]  master -> master (fetch first) 
error: failed to push some refs to '[email protected]' 
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)存储库

对不起,我知道无知不是保佑,但现在我问是否有任何方法让我的代码回来?

+0

wooow我刚刚发布了这1秒,看到有人投下了它立即!!!!!无论如何,我不打算处理这些人的更多,请我需要关于这个人的帮助 – medBo

+1

'git reflog'可能有助于文件/更改至少是一些提交的一部分。我确定这里有相关的问题。 –

回答

5

你有不知何故通过使用reset --hard搞乱你的分支HEAD。使用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> 
+0

男人我爱你,你保存我的工作 – medBo

+0

当我尝试合并temp_branch它说:拒绝合并无关的历史 – medBo

+0

我不知道你为什么面对这个错误,但是你可以在合并时传递'--allow-unrelated-historories'参数。试着在另一个临时分支上做,这样你就不会做不理想的事情。 – hspandher

0

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

那么,从备份中恢复它。如果你没有它,那么没有,你所有的未提交更改最有可能消失。不一定非常好,但最后的机会是立即关闭机器,将硬盘放入其他机器,将磁盘安装为只读模式并尝试使用“取消删除”类型的工具。

Git命令删除了我的东西

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

+0

但是如果他在硬重置之前已经提交了,他可以尝试reflog – Alexan

+0

另外,如果他已经分阶段但未提交更改,则可以在原始对象数据库中搜索看起来有趣的事物。 – o11c

+0

@Alexan是的,我做了,它的工作:) – medBo

0

hspandher的回答是正确的,但我想添加一些更多的信息。

您也可以在git log中看到提交ID,取决于分支发生了什么。

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

git pull --rebase 

尽量拉的变化,从它的上游,然后重订更改到上游处处长,基本上它看起来像你将有从上次提交开始工作,但在此期间可能会发生冲突。这有点像一个合并,但你拉动远程主人。

看看这个:enter image description here

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