以zdaiot.github.io
为例介绍github子模块的使用。
添加子模块
例如:
1 | git init |
更新子模块
将配置好的主题覆盖该目录
1 | cd themes/next |
接着要回到包含子模块的目录,更新。若不执行下面的操作,则github的子模块与hexo-theme-next指向不是一个分支
1 | cd ../../ //切到仓库的根目录 |
删除子模块
直接删掉子模块
1
rm -rf sub_folder
到.git文件夹下大扫除(删掉所有相关的东西咯)
1
2
3
4
5cd .git
vim config 删掉submodule信息
cd ./modules
rm -rf * 注意一定要慎重!千万别敲错了,或者可以到文件夹手动删除,防止敲错误删
cd ../..继续清理
如果直接add子模块,会提示'sub_folder already exists in the index'
,所以需要1
git rm --cached sub_folder
然后可以确认一下
1 | git ls-files --stage www/topsdk |
如果提示Please stage your changes to .gitmodules or stash them to proceed
直接删掉.gitmodules文件即可
1 | rm ./gitmodules |
- 这时候就可以进行add操作了
1
git add remote_repo sub_folder_path
主模块包含的模块和子模块不同步
具体就是,当在themes/next
的时候,若执行同步操作后,github中的hexo-theme-next
仓库中mater分支会更新,但是主模块执完更新后,仍然指向的旧的地址。
解决方法为:进入主模块,再次同步主模块即可。