github子模块

zdaiot.github.io为例介绍github子模块的使用。

添加子模块

例如:

1
2
git init
git submodule add git@github.com:zdaiot/hexo-theme-next.git themes/next

更新子模块

将配置好的主题覆盖该目录

1
2
3
4
cd themes/next
git add .
git commit -m "next settings in fork next rep"
git push origin master //这是提交到fork后主题的仓库

接着要回到包含子模块的目录,更新。若不执行下面的操作,则github的子模块与hexo-theme-next指向不是一个分支

1
2
3
4
5
6
7
8
cd ../../ //切到仓库的根目录
git add .
git commit -m "update next settings in blog sources branch"
git remote add origin git@github.com:zdaiot/zdaiot.github.io.git //将本地与Github项目对接
git push origin --delete hexo //删除hexo分支
git branch hexo //新建分支
git checkout hexo //切换分支
git push origin hexo //注意hexo分支

删除子模块

  1. 直接删掉子模块

    1
    rm -rf sub_folder
  2. 到.git文件夹下大扫除(删掉所有相关的东西咯)

    1
    2
    3
    4
    5
    cd .git
    vim config 删掉submodule信息
    cd ./modules
    rm -rf * 注意一定要慎重!千万别敲错了,或者可以到文件夹手动删除,防止敲错误删
    cd ../..
  3. 继续清理
    如果直接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

  1. 这时候就可以进行add操作了
    1
    git add remote_repo sub_folder_path

主模块包含的模块和子模块不同步

具体就是,当在themes/next的时候,若执行同步操作后,github中的hexo-theme-next仓库中mater分支会更新,但是主模块执完更新后,仍然指向的旧的地址。
解决方法为:进入主模块,再次同步主模块即可。

------ 本文结束------
坚持原创技术分享,您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道