2013-07-15 19 views
0

这是情况。我对我的分支和origin/master进行了合并(在图片上提交了80d0e2b),并将我的更改推送到远程服务器。合并似乎是低劣的,我决定申请git reset HEAD~1将其从服务器中删除(是的,我是愚蠢的)。现在我结束了这种情况,当某些提交(例如MOB-25)无法从任何分支到达时,提交2e4df35被称为最后一个。如何解决错误重置的后果?

我想过将原点/主点改为指向MOB-25,然后再应用提取并再次合并。

我也发现这个线程建议使用reflog(How can I undo git reset --hard HEAD~1?),但我想100%确定。什么是解决这个混乱的最好方法? enter image description here

+1

@Andrew艾利特:damluar希望成为“100%当然“,但它是重复的。 ;)但是,它是重复的。值得让这个问题保持开放,但是,这是一个比简洁的原始问题更好的问题,虽然原来有更好的答案... – Arafangion

回答

1

您唯一的选择是使用git reflog来查找sha1提交的历史列表以及您的备份。

一旦你找到了你想要的提交,从它的标记或分支,使它出现在你的日志。

哎呀,标记全部 reflog行,如果你想要,用不同的标签指示'MOB-25',并使用gitk或你首选的git程序来查看版本树。当你找到你想要的那个时,随时删除它们。

要查看引用日志:

git reflog 

要创建标签:

git tag MOB-25a theSha1 

要创建一个分支:

git branch theSha1 MOB-25a 
+0

你能提供命令吗? – damluar

+0

@Andrew Aylett:感谢编辑,错过了,对此感到遗憾。 – Arafangion

+0

因此,我创建了一个指向最后一次丢失提交的分支,然后我可以将它与当前提交合并。这样对吗?为什么我们需要标签? – damluar