我有一個主和開發人員分支的git存儲庫。
假設我的分支名爲branch1
。
在我的回購裏面我有一個名爲myfolder
的文件夾。我是在branch1
,我做git雙結帳,文件夾內容消失
git checkout master
git checkout branch1
myfolder
現在是空的(原文如此),這是怎麼回事?
我應該注意,myfolder
包含在.gitignore
,我懷疑是造成這個問題的原因,但我不明白爲什麼。還有一種方法可以恢復其內容?
我有一個主和開發人員分支的git存儲庫。
假設我的分支名爲branch1
。
在我的回購裏面我有一個名爲myfolder
的文件夾。我是在branch1
,我做git雙結帳,文件夾內容消失
git checkout master
git checkout branch1
myfolder
現在是空的(原文如此),這是怎麼回事?
我應該注意,myfolder
包含在.gitignore
,我懷疑是造成這個問題的原因,但我不明白爲什麼。還有一種方法可以恢復其內容?
根據您的情況,並解釋你的觀察,我推斷如下:
master
分支,該文件夾myfolder
是存儲庫的一部分。branch1
分支上,該文件夾不是存儲庫的一部分,並且正在使用.gitignore
規則將其從Git中排除。所以,你從branch1
開始,該文件夾存在但被Git忽略,所以Git不知道它的內容。現在,您切換到master
分支;該分支會跟蹤該文件夾的內容。切換到它時,Git將(未跟蹤的)本地文件的內容與master
分支的內容進行比較。因爲它沒有遇到任何差異,所以在檢出分支時沒有衝突,所以它工作正常。
您最終得到master
分支,並且跟蹤到myfolder
文件夾。現在,您切換回branch1
:myfolder
文件夾是您要切換的master
分支的一部分,但它在branch1
分支上不存在。所以Git會刪除它。沒有那個文件夾的情況下,你最終會在branch1
上得到這個結果。
不幸的是,當Git檢測到丟失未提交內容的可能性時,確實似乎覆蓋了內容而沒有執行檢查。這可能是由於忽略規則。所以我擔心,從以前未提交的狀態中恢復確切的內容是不可能的。您只有master
。
感謝您的解釋,它絕對有道理。我現在將第n次對git發聲。 – Manfredo
不清楚你做了什麼,你有一個文件夾的內容和切換分支的內容不見了? – CodeWizard
是的,所以在時間0說我在分支1上。我先結賬,然後到分行1,所以我應該回到我所在的位置。但是在此過程中文件夾的內容被刪除。 – Manfredo