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