當我提交我的更改時,我當時並不在任何分支上。 我沒有真正注意到這個消息,並檢出了另一個分支。當前不在任何分支上+ git commit +在不在任何分支中時簽出。我有沒有放棄我的改變?
如何檢索我的更改? 我無法合併或結帳,因爲沒有合併分支。
當我提交我的更改時,我當時並不在任何分支上。 我沒有真正注意到這個消息,並檢出了另一個分支。當前不在任何分支上+ git commit +在不在任何分支中時簽出。我有沒有放棄我的改變?
如何檢索我的更改? 我無法合併或結帳,因爲沒有合併分支。
您可以使用git reflog
得到承諾的承諾,你做了,而在「無分支」(一個分離的頭)和合並,在到您目前在(主也許)
分支哈希類似於git merge [email protected]{1}
您也可以git rebase -i
並從reflog中「挑選」您想要的提交。
git櫻桃選擇{哈希}也似乎工作 – 2013-08-14 20:32:51
您的提交沒有消失,您可以通過讓git向您顯示隱藏的提交併將它們放回臨時分支來恢復。
有關說明,請參見this answer。
這比在這種情況下更容易,因爲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
Upvoted他尊重 – CharlesB 2011-05-18 18:45:37
你永遠不會「不在任何分支上」。您可能已經在名爲master
的分支上,但是當您提交時,您在分支上。所以那個提交是SOMEWHERE。
使用git log
來查看歷史記錄。您可以使用git reset
及時返回(包括(可選)將更改保留在工作目錄中)。
這是錯誤的 - 你*不能*在分支上。這種狀態稱爲「分離HEAD」,因爲「HEAD」指向特定提交的散列而不是分支名稱。您使用分離的HEAD進行的任何提交都不會推進分支提示,但仍可通過reflog訪問一段時間。 – 2011-05-18 18:37:37
不正確。現在「$ git status」給了我「#目前沒有任何分支。」 (而不是通常的「#分支大師」),然後是「#要承諾的變化:」等。 – weronika 2012-01-21 00:50:56
使用「git reflog」它顯示了你的git命令歷史結果的提交哈希。 然後你可以「git co hash」,當你找到合適的人時,爲它設置/創建一個分支。
我是在一個類似的狀態犯了一些工作後:
莉莉絲:經理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 + -
...
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...)) $
我認爲這是最好的答案。另外值得一提的是,你可以使用'git branch'來檢查你當前的分支。 – 2014-06-18 16:50:38
這可以用最簡單的解決方案來回答問題。 'git checkout -'(只是爲了再次突出顯示) – N8TRO 2015-05-20 15:19:00
你還有從您提交的控制檯輸出?它是否包含提交的SHA1?如果是這樣,你有提交對象,這就是你所需要的一切 – rlc 2011-05-18 17:12:47
我......不知道你可以*不*在分支中...... – 2011-05-18 17:13:00
@Ignacio不在分支上的最常見情況是當你簽出一個不屬於分支的提交 – CharlesB 2011-05-18 17:19:58