2011-07-16 117 views
39

我试图修复git的问题,不小心使用的git的复位 - 硬一些以前的承诺。所以现在我无法回到老头上。的Git失去了承诺

但是我没有克隆库我这样做之前,所以我把丢失的承诺回到原来的。这似乎昨天工作,但今天我看到,原来仍然停留在旧的承诺,新的似乎并不存在。 试图从克隆推新提交的git的告诉我一切再次不工作是最新的。

我该如何解决这个问题?

回答

58

为了让你的后脑勺在正确的地方:

  1. git reflog获得的,其中头部有一直最近的列表。
  2. git show sha1找到你想要你的头为光斑。
  3. 一旦你找到你想要的提交,git merge让你的主人回到正确的位置。

一些解释:在一个git提交没有任何指向一个提交后发生的提交。当您重置HEAD时,您将其指向较旧的提交。你以前的头现在晃来晃去没有任何指向它。

我们使用reflog来查看HEAD最近在哪里。一旦它回到你想要的位置,你将主人或其他一些分支指向那个地方,一切都很好!

+2

'git cherry-pick the sha1's' –

-8

尝试键入git fetch获得更新的资料库

24

我做得有点不同。我没有...

git reflog 
3bd79d2 [email protected]{2}: checkout: moving from edbfb06528c43586a0e0e10a73051e06980b9281 to master 
edbfb06 [email protected]{3}: commit: added general comments for rubric 
f8ca172 [email protected]{4}: checkout: moving from 904d63bf08f6f6b1494bfa473b158b9509b18423 to 
904d63b [email protected]{10}: commit: updated results page and csv 
933f2a6 [email protected]{11}: commit: updates 
f56e6cd [email protected]{12}: clone: from [email protected]:xxxx.git 

......在这种情况下,我的“为栏目增加一般性意见”是承诺,我失去了。现在我有了提交ID,我用cherry-pick取回它...

git cherry-pick edbfb06