2012-08-27 87 views
1

我有一個git倉庫。 當我做「git的分支」,它說我怎樣才能回到我原來的git分支

$ git branch 
* com-2.1-SS 

,然後我做「git的日誌」,讓我的名單提交

$ git log 
commit ff878926b78614e8bf6af161da06070618e9ff6b 

commit 3ffda8cec60a74a718fb25fb7a9fe4b3c4381137 

commit bf6bb3427d8031d8e172c3b8b7909c8580e929cd 

所以我想我的倉庫檢查出3ffda8cec。所以我做了'git checkout 3ffda8cec'。

到目前爲止這麼好。它工作,我得到我想要的。

但我的問題是我怎麼能回到com-2.1-SS? 即扭轉的事實,我 'git的結帳3ffda8cec'

當我做 'git的分支',它說

$ git branch 
* (no branch) 

當我做「git的結帳git的結帳COM-2.1-SS

error: pathspec 'com-2.1-SS' did not match any file(s) known to git. 
+0

您可以仔細檢查您的輸出。你原來的分支輸出表示你只有一個分支('com-2.1-SS'),但你的第二個git輸出表明你根本沒有分支,但是你所說的你所做的一切應該已經消滅了你的分支。應該工作的命令是'git checkout com-2.1-SS',而不是'git checkout git checkout com-2.1-SS1'。 –

+2

正如@CharlesBailey所說,似乎在你對'git branch'的兩次調用之間,你刪除了名爲'com-2.1-SS'的分支(如果你只使用了git命令,那麼你可能已經使用了'git branch -D com- 1.2-ss')這是你的錯誤最明智的解釋。 –

回答

2

git reflog將向您顯示分支提示的不同值,您可以檢出它返回到以前的狀態。

你的情況是比較容易,因爲你還是現在知道的com-2.1-SSgit checkout前SHA1是ff878926b78614e8bf6af161da06070618e9ff6b(這基本上是什麼git reflog做),這樣就可以直接做:

git checkout ff878926b78614e8bf6af161da06070618e9ff6b 

Althoug我不明白從您的分支中刪除您的分支,您可以在結帳後重新創建分支:

git checkout -b com-2.1-SS 
+0

不是你的答案是錯誤的,但AFAICT OP在這裏只是在不移除'com-2.1-SS'(無頭模式)的情況下檢出'3ffda8cec'並且似乎無法再次檢查'com-2.1-SS'。我不確定reflog是否有助於解決任何問題。但最後,做一個'git checkout -B com-2.1-SS ff878926b'確實可以解決這個問題。 –

+0

我沒有選擇分支。我不明白爲什麼在我退房至SHA之後「消失」了。 – michael