2011-01-30 58 views
200

使用Git X並且必須在某物上摸索。看起來像幾天前我創建了一個名爲detached HEAD的分支,並一直致力於此。我的正常流程是承諾master,然後將其推送到origin。但我無法推動detached HEADgitx如何讓我的'Detached HEAD'提交回主模塊

我的下一站停止了我。我選擇了git checkout master - 我的detached HEAD分支消失了。回到我的項目,我過去幾天的所有變化都被抹去了。

無論如何我可以得到這些變化嗎?

+2

使用git reflog查找丟失的提交。 – 2011-01-30 21:05:49

+1

請參閱http://gitready.com/intermediate/2009/02/09/reflog-your-safety-net.html – rgardler 2011-12-23 13:56:14

回答

388

如果checkout master是你做的最後一件事,那麼reflog進入[email protected]{1}將包含您提交(以其它方式使用git refloggit log -p找到它們)。使用git merge [email protected]{1}將它們快速轉發到主設備。

編輯:

正如在評論中指出,Git Ready has a great article這一點。

git refloggit reflog --all會給你錯誤提交的提交散列。

Git Ready: Reflog, Your Safety Net

來源:http://gitready.com/intermediate/2009/02/09/reflog-your-safety-net.html

+8

不是一個強大的git用戶,這是有幫助的,但沒有足夠的細節。它促使我搜索網絡 - 謝謝。我發現http://gitready.com/intermediate/2009/02/09/reflog-your-safety-net.html非常有用 – rgardler 2011-12-23 13:55:20

60

如果分離的頭是主人的快進快你只是想在提交上游,可以

git push origin HEAD:master 

直接推動,或

git checkout master && git merge [ref of HEAD] 

會將它合併回來給你當地的主人。