2011-05-18 37 views
34

當我提交我的更改時,我當時並不在任何分支上。 我沒有真正注意到這個消息,並檢出了另一個分支。當前不在任何分支上+ git commit +在不在任何分支中時簽出。我有沒有放棄我的改變?

如何檢索我的更改? 我無法合併或結帳,因爲沒有合併分支。

+0

你還有從您提交的控制檯輸出?它是否包含提交的SHA1?如果是這樣,你有提交對象,這就是你所需要的一切 – rlc 2011-05-18 17:12:47

+3

我......不知道你可以*不*在分支中...... – 2011-05-18 17:13:00

+3

@Ignacio不在分支上的最常見情況是當你簽出一個不屬於分支的提交 – CharlesB 2011-05-18 17:19:58

回答

67

您可以使用git reflog得到承諾的承諾,你做了,而在「無分支」(一個分離的頭)和合並,在到您目前在(主也許)

分支哈希類似於git merge [email protected]{1}

您也可以git rebase -i並從reflog中「挑選」您想要的提交。

+1

git櫻桃選擇{哈希}也似乎工作 – 2013-08-14 20:32:51

2

您的提交沒有消失,您可以通過讓git向您顯示隱藏的提交併將它們放回臨時分支來恢復。

有關說明,請參見this answer

+2

這比在這種情況下更容易,因爲reflog將具有提交 - [manojlds的答案](http://stackoverflow.com/questions/6048425/not-currently-on-any-branch-git-commit-checkout- when-not-in-any-branch-did-i/6048609#6048609)描述了這一點。 – 2011-05-18 18:42:12

+0

Upvoted他尊重 – CharlesB 2011-05-18 18:45:37

-5

你永遠不會「不在任何分支上」。您可能已經在名爲master的分支上,但是當您提交時,您在分支上。所以那個提交是SOMEWHERE。

使用git log來查看歷史記錄。您可以使用git reset及時返回(包括(可選)將更改保留在工作目錄中)。

+12

這是錯誤的 - 你*不能*在分支上。這種狀態稱爲「分離HEAD」,因爲「HEAD」指向特定提交的散列而不是分支名稱。您使用分離的HEAD進行的任何提交都不會推進分支提示,但仍可通過reflog訪問一段時間。 – 2011-05-18 18:37:37

+0

不正確。現在「$ git status」給了我「#目前沒有任何分支。」 (而不是通常的「#分支大師」),然後是「#要承諾的變化:」等。 – weronika 2012-01-21 00:50:56

1

使用「git reflog」它顯示了你的git命令歷史結果的提交哈希。 然後你可以「git co hash」,當你找到合適的人時,爲它設置/創建一個分支。

11

我是在一個類似的狀態犯了一些工作後:

莉莉絲:經理KelSolaar $ git的狀態

目前沒有任何分支。

我發出了混帳登錄看到我最後一次提交的哈希:

莉莉絲:經理KelSolaar $ git的日誌

提交49984303037e970d637161c3154b7fd7d6ae3a43 作者:KelSolaar 日期:星期三22年10月5日:41:31 2011 +0100

Introduce new "QObject" components category and rename existing ones to "Def 

然後我檢查了我的主分支:

莉莉絲:經理KelSolaar $ git的結帳主

上一頁頭位是4998430 ......引入了新的「QObject的」組件categorie,並重新命名exising的人來「默認「和」QWidget「。

切換到分支 '主人'

我使用哈希提交最後合併:

莉莉絲:經理KelSolaar $ git的合併49984303037e970d637161

更新141bc69..4998430

快進

src/manager/component.py | 2 + -

...

8

git checkout -將切換回之前的分支:

Thu Feb 21 12:50 AM /src/test ((08f84f4...)) $ git checkout master 

Warning: you are leaving 1 commit behind, not connected to 
any of your branches: 

    08f84f4 Fix everything 

Switched to branch 'master' 

Thu Feb 21 12:50 AM /src/test (master) $ git checkout - 

HEAD is now at 08f84f4... Fix everything 

Thu Feb 21 12:50 AM /src/test ((08f84f4...)) $ 
+1

我認爲這是最好的答案。另外值得一提的是,你可以使用'git branch'來檢查你當前的分支。 – 2014-06-18 16:50:38

+0

這可以用最簡單的解決方案來回答問題。 'git checkout -'(只是爲了再次突出顯示) – N8TRO 2015-05-20 15:19:00

相關問題