![](/img/trans.png)
[英]I checked out to a previous commit in git repo. Did some changes and made a commit there. Pushing changes to master branch says everything up to date
[英]Checked out previous commit, made changes, now everything is lost?
我檢查了以前的提交。 我花了幾個小時進行了許多更改並提交了它們。 然后我切換到另一個分支。 當我切換回我正在處理的上一個提交時,我注意到我所做的所有更改都消失了。 我也沒有在歷史上看到他們。
換句話說,我做了以下事情:
git checkout bfea631
(之前的提交)git checkout master
git checkout bfea631
(之前的提交)任何幫助將不勝感激,因為我花了多個小時在上面的步驟 2 中進行更改。
您可以嘗試使用git reflog
查找您的提交。 它顯示您的HEAD
最近在哪里。
為什么會這樣?
像您一樣直接檢查提交后,您的 HEAD 不再附加到分支。 (稱為“分離的 HEAD 狀態”)
這意味着進一步的提交會將您檢出的提交作為其父提交,並最終形成一個提交鏈,但是除了您當前的 HEAD 之外,該鏈不會被其他任何東西引用。
現在,當您檢查其他內容,分支或提交時,提交(或提交鏈)會“懸空”,等待垃圾收集器,具體取決於設置,但在大多數情況下不會低於 90 天,因此無需恐慌。
如何重回正軌
但是在垃圾收集發生之前,您只需再次檢查(退出)即可將其取回。 通過在終端輸出中查找,提交哈希可能已由許多 git 命令顯示(盡可能快速簡單! ),或者,就像已經建議的那樣,在您的 reflog 中以前的 HEAD 職位。
這個遲到的答案是為任何有同樣問題的人准備的。
OP 的問題是分離頭http://git-scm.com/docs/git-checkout#_detached_head
他的確切問題是文章中的commit e
和commit f
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.