添加子模塊
$ git submodule add <url> <path>
url
為想要添加的子模塊路徑path
為子模塊存放的本地路徑
示例,添加 r-tinymaix 為子模塊到主倉庫 ./sdk/packages/online-packages/r-tinymaix
路徑下,命令如下所示:
$ git submodule add https://github.com/RiceChen0/r-tinymaix.git ./sdk/packages/online-packages/r-tinymaix
等命令執行完畢后,在本地路徑就可以看到子模塊內容了:
此時報了一個警告:
warning: in the working copy of '.gitmodules', LF will be replaced by CRLF the next time Git touches it
這是因為在文本處理中,Windows平臺中使用 CR/LF(回車/換行)
作為換行符,Linux平臺中僅使用 LF(換行)
作為換行符,這個問題可以通過以下方式解決:
$ git config --global core.autocrlf true
查看子模塊
$ git submodule
可以看到子模塊信息:
c5029b773b0511d32cca78275b7c8f1fb5eb34a8 sdk/packages/online-packages/r-tinymaix (heads/main)
更新子模塊
$ git submodule update
提交子模塊
查看倉庫狀態:
$ git status
可以看到有新文件添加進來:
這里我自己添加了一個 Sconscript
文件,將它也添加進來,執行命令:
$ git add .
提交到倉庫、推送到遠端:
$ git commit -m "add r-tinymaix"
$ git push origin HEAD:master
博主倉庫沒有遠端,就不 push
了~
刪除子模塊
簡單粗暴式
- 刪除子模塊目錄及源碼:
- 刪除
.gitmodules
文件中子模塊相關條目:
- 刪除
.git/config
配置項中子模塊相關條目:
- 刪除
.git/module/
目錄下子模塊相關內容:
官方優雅式
根據官方文檔,可使用卸載子模塊命令:
$ git submodule deinit <sub-module>
如果添加上參數 --force
,則子模塊工作區內即使有本地的修改,也會被移除。