2012-05-07 79 views
8

我有一個嚴重的問題試圖做我的回購git rebase --interactive。我得到了神祕的錯誤fatal: ref HEAD is not a symbolic ref,並且我的rebase停止運作。我必須git rebase --abort才能恢復到良好的狀態。我不能git rebase - 交互

以下是輸出(S)我收到:https://gist.github.com/d38f1e2d2ec9bc480b6f

我已經在過去被告知的是,這是由於這樣的事實,我在「分離的頭」模式,但如何將如果我處於這種模式,我首先得到了rebase?我肯定從master開始,然後運行git rebase --interactive並將git-rebase-todo文本文件修改爲我想要的。然後這個錯誤發生。

我已經問過大家在這裏工作,還有一些人在freenode上@ #git。似乎沒有人真正理解我的問題或知道解決方案是什麼。谷歌搜索該錯誤沒有產生任何東西,相關的搜索StackOverflow沒有證明。我似乎無法弄清楚這一點,從壓制每一次我推動主人到現在推動我作爲自己單獨提交的每一個小小改變,這真的很蹩腳。

+0

這裏描述了一個成功的rebase -i:http://davidstechtips.com/2011/03/collapsing-commits-in-git/。在你的情況下,嘗試'git checkout master VonC

+1

這可能是因爲你仍然處於之前的重新生成過程中,它在重新處理期間將頭部分開。在固定當前互動步驟的熱潮中,這可能會很容易發生,你可能會分心。我剛剛完成了一個基礎工作,在那裏我做了很多工作(很多小步驟),但最終爲每一步都做了一個單獨的「rebase -i」,這樣我就不會迷路了。啓動git-gui和gitk visualiser也會有所幫助。 [請確保你開始在你自己的本地分支] –

+0

你可以通過查看'.git/HEAD'的內容來確定你是否實際處於分離HEAD模式。如果它包含像「ref:refs/heads/......「你不是在分離的HEAD模式。另一方面,如果它包含一個SHA-ID(例如一串字母和數字),你確實處於分離的HEAD模式。 –

回答

3

在'git rebase'期間,您正在重新綁定的引用被檢出。如果這個裁判是一個提交,那麼你會得到一個分離的頭;如果它是分支引用,那麼該分支被檢出。如果在提交過程中發生致命錯誤,那麼您將留下一個工作目錄處於消失狀態。例如,如果您在Foo分支上,並且您嘗試重新綁定Bar,那麼在發生致命錯誤後,您將在Bar或Bar後的某個位置應用幾次rebase提交。您只需簡單地檢查Foo即可恢復。

git rebase --abort 

,或者,如果底墊真的楔形(見下文參考),如:

git checkout -f Foo 

之後,你可以放心地再次嘗試重訂,試圖調試爲什麼發生FATAL。 Here是當內存耗盡並且'git rebase --abort'不起作用時rebase失敗的情況。

+1

使用'git checkout -f'不能解決我的問題。我一直在做'git rebase --abort'每次都要擺脫rebase。下面是我嘗試'git checkout -f'時得到的結果:https://gist.github.com/4d3aa867602f1e438e9b – tubbo

+0

這是由於我使用'git-tracker'。抱歉!! – tubbo

+0

使用'git rebase --abort'是首選方法;但它並不總是有效(請參閱參考資料) – GoZoner