Git Submodule 除錯
前言: 網路上已經有很多關於 Git Submodule 的介紹,使用方式 、使用時機等等,都有很可靠的資訊可以參考,因此本篇文章並不會再贅述使用方法,而是著重在泰勞之前遇到的問題,經驗分享以及解決的辦法。 前情提要: 我們先依照下列步驟製造出一個類似的場景,先新增一個 Submodule,然後 接著將 Submodule 裡面的 .git 刪除! $ git submodule add <repository> submodule $ git commit -m "Add submodule" $ cd submodule $ rm -rf .git 這麼做當然是為了要模擬問題,但是為什麼要這麼做?原因是泰勞曾經拿過一個 Patch,它只是一個目錄,並非 Git Patch,因此我用 cp 將其複製到工作區裡面,並且加入至 Git Stage,就在此時,問題發生了,是我從來沒有看過的錯誤訊息! fatal: Pathspec 'xxx' is in submodule 不管我怎麼做,submodule 目錄都無法被加入!就如同上圖,錯誤訊息顯示此目錄底下的檔案在 Submodule 裡面,泰勞可以合理推測當時那個 Patch,原先在別人手上時,是以 Submodule 的方式做管理,而發出 Patch 的步驟是直接將目錄複製出來給我們,並沒有選擇 Git Patch,才會導致這樣的問題。 解決方式並不複雜,透過 Git 將其刪除,然後再加回來即可。 $ git rm -rf --cached submodule $ git add submodule/ $ git commit -m "Add folder" 這個問題應該不會太常遇到,復現此現象也只是想讓大家知道有這種款式的錯誤訊息,不過,上網查詢資料時,也是有蠻多人表示他們是不小心刪除 .git 造成的 XD 參考資料: [StackOverflow]Git: fatal: Pathspec is in submodule