子模块前面有一个-
,说明子模块文件还未检入(空文件夹)。
- 初始化子模块
$ git submodule init
Submodule 'assets' (https://github.com/maonx/vimwiki-assets.git) registered for path 'assets'
初始化模块只需在克隆父项目后运行一次。
- 更新子模块
$ git submodule update
Cloning into 'assets'...
remote: Counting objects: 151, done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 151 (delta 18), reused 0 (delta 0), pack-reused 70
Receiving objects: 100% (151/151), 1.34 MiB | 569.00 KiB/s, done.
Resolving deltas: 100% (36/36), done.
Checking connectivity... done.
Submodule path 'assets': checked out 'e33f854d3f51f5ebd771a68da05ad0371a3c0570'
递归克隆整个项目
git clone https://github.com/maonx/vimwiki-assets.git assets --recursive
递归克隆整个项目,子模块已经同时更新了,一步到位。
修改子模块
在子模块中修改文件后,直接提交到远程项目分支。
$ git add .
$ git ci -m "commit"
$ git push origin HEAD:master
删除子模块
删除子模块比较麻烦,需要手动删除相关的文件,否则在添加子模块时有可能出现错误
同样以删除assets
文件夹为例
- 删除子模块文件夹
$ git rm --cached assets
$ rm -rf assets
- 删除
.gitmodules
文件中相关子模块信息
[submodule "assets"]
path = assets
url = https://github.com/maonx/vimwiki-assets.git
- 删除
.git/config
中的相关子模块信息
[submodule "assets"]
url = https://github.com/maonx/vimwiki-assets.git
- 删除
.git
文件夹中的相关子模块文件
$ rm -rf .git/modules/assets