簡體   English   中英

檢查了以前的提交,進行了更改,現在一切都丟失了?

[英]Checked out previous commit, made changes, now everything is lost?

我檢查了以前的提交。 我花了幾個小時進行了許多更改並提交了它們。 然后我切換到另一個分支。 當我切換回我正在處理的上一個提交時,我注意到我所做的所有更改都消失了。 我也沒有在歷史上看到他們。

換句話說,我做了以下事情:

  1. git checkout bfea631 (之前的提交)
  2. 更改、添加和提交了許多文件/更改。
  3. git checkout master
  4. 做了一個提交。
  5. git checkout bfea631 (之前的提交)
  6. 注意到我在第 2 步中所做的更改消失了。

任何幫助將不勝感激,因為我花了多個小時在上面的步驟 2 中進行更改。

您可以嘗試使用git reflog查找您的提交。 它顯示您的HEAD最近在哪里。

為什么會這樣?

像您一樣直接檢查提交后,您的 HEAD 不再附加到分支。 (稱為“分離的 HEAD 狀態”)

這意味着進一步的提交會將您檢出的提交作為其父提交,並最終形成一個提交鏈,但是除了您當前的 HEAD 之外,該鏈不會被其他任何東西引用。

現在,當您檢查其他內容,分支或提交時,提交(或提交鏈)會“懸空”,等待垃圾收集器,具體取決於設置,但在大多數情況下不會低於 90 天,因此無需恐慌。

如何重回正軌

但是在垃圾收集發生之前,您只需再次檢查(退出)即可將其取回。 通過在終端輸出中查找,提交哈希可能已由許多 git 命令顯示(盡可能快速簡單! ),或者,就像已經建議的那樣,在您的 reflog 中以前的 HEAD 職位。

這個遲到的答案是為任何有同樣問題的人准備的。

OP 的問題是分離頭http://git-scm.com/docs/git-checkout#_detached_head

他的確切問題是文章中的commit ecommit f

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM