2016-11-11 51 views
0

我有一個主和開發人員分支的git存儲庫。
假設我的分支名爲branch1
在我的回購裏面我有一個名爲myfolder的文件夾。我是在branch1,我做git雙結帳,文件夾內容消失

git checkout master 
git checkout branch1 

myfolder現在是空的(原文如此),這是怎麼回事?

我應該注意,myfolder包含在.gitignore,我懷疑是造成這個問題的原因,但我不明白爲什麼。還有一種方法可以恢復其內容?

+0

不清楚你做了什麼,你有一個文件夾的內容和切換分支的內容不見了? – CodeWizard

+0

是的,所以在時間0說我在分支1上。我先結賬,然後到分行1,所以我應該回到我所在的位置。但是在此過程中文件夾的內容被刪除。 – Manfredo

回答

0

根據您的情況,並解釋你的觀察,我推斷如下:

  1. master分支,該文件夾myfolder是存儲庫的一部分。
  2. branch1分支上,該文件夾不是存儲庫的一部分,並且正在使用.gitignore規則將其從Git中排除。

所以,你從branch1開始,該文件夾存在但被Git忽略,所以Git不知道它的內容。現在,您切換到master分支;該分支會跟蹤該文件夾的內容。切換到它時,Git將(未跟蹤的)本地文件的內容與master分支的內容進行比較。因爲它沒有遇到任何差異,所以在檢出分支時沒有衝突,所以它工作正常。

您最終得到master分支,並且跟蹤到myfolder文件夾。現在,您切換回branch1myfolder文件夾是您要切換的master分支的一部分,但它在branch1分支上不存在。所以Git會刪除它。沒有那個文件夾的情況下,你最終會在branch1上得到這個結果。

不幸的是,當Git檢測到丟失未提交內容的可能性時,確實似乎覆蓋了內容而沒有執行檢查。這可能是由於忽略規則。所以我擔心,從以前未提交的狀態中恢復確切的內容是不可能的。您只有master

+0

感謝您的解釋,它絕對有道理。我現在將第n次對git發聲。 – Manfredo