今天遇到一個很怪的問題,我想把我的一個子模塊切換到另一個上游,我按照網上的方法刪除子模塊然后新建后,這個子模塊依舊跟蹤着我先前的上游。自己摸索了一下,可能方法比較傻,不過是可行的,希望能給大家一些幫助。
- 使原先子模塊不被版本控制(先把子模塊從版本控制系統移除)
git rm --cached /path/to/files
- 刪除子模塊目錄
rm -rf /path/to/files
- 修改 .gitmodules,移除這個 submodule
-[submodule "themes/next"]
- path = themes/next
- url = https://github.com/theme-next/hexo-theme-next.git
- 修改
.git/config
內容,把需要刪除的 submodule 配置項刪除 - 修改
.git/modules
文件夾內容,把你想要刪除的子模塊目錄刪除(這項十分重要,或者你知道怎么修改也可以修改,不然導致的后果就是你改過來的同名子模塊依然跟蹤着之前的分支,git pull 也沒法拉取你在 .gitmosules 中新定義的上游地址) - 后面再按照普通的方法添加子模塊即可
一些子模塊的操作可以參見Git Submodule 用法筆記