2011-08-05 99 views
0

錯誤我已經做了許多天的工作承諾沒有地方。當我檢查當前的分支git回答我(沒有分支)。所以很多承諾(沒有分支)

事實上,我的印象是,我承諾一個新的分支(除了主人),並且一切都很順利。現在,當我遍歷並檢查甚至是一個非常古老的提交(大約一個月後)的分支時,仍然git說它不在任何地方(即沒有分支)。

我知道,如果只有一個提交,合併將有所幫助。現在我怎麼才能讓所有先前的提交與主合併?

在此先感謝。

回答

1

您可能犯了一個所謂的「分離的HEAD」(例如在git checkout abc123ef之後)。

如果你知道你犯犯上次(即你的「丟失」分支的HEAD),你應該能夠重置跳轉到本承諾,一切都會好起來的:git branch -f some-branch cbd131ef

+2

如果你不知道最後一次提交,你可以用'git reflog'找到它 – jalf

+0

謝謝Koraktor,@Jalf。我會嘗試 –

+0

嗨,把它固定好了,謝謝 –

3

當你結帳爲「無分支」混帳說:

您在「分離的頭」狀態。您可以環視,製作 實驗性更改並提交它們,並且您可以放棄您在此狀態下進行的任何提交 而不影響任何分支,方法是執行 另一個結帳。

如果您想創建一個新分支來保留您創建的提交,您可以通過再次使用-b和checkout命令(現在或以後)來執行此操作(現在或以後)。 例子:

git的結帳-b new_branch_name

當然,只要你想,你可以合併儘可能多的提交。

要找到一個分離的頭如果你失去了它可以使用git reflog。

你也應該記住,一個分離的頭可以被垃圾收集。

+0

嗨侃;謝謝。但是我無法在reflog中找到'detached HEAD'。可能是什麼原因? –

+0

你必須在這裏找到你的提交。它不被稱爲「獨立頭」。 – kan

+0

我不確定您的回購現在的狀態如何。這是你最近的承諾嗎?只要執行「git checkout -b new_branch_name」即可。之後,您可以切換到主併合並分支。 – kan