关于博客主题自动更新的问题记录
设置子模块
将 blog
仓库的主题文件夹设置成子模块
1 | git submodule add https://github.com/xiangshu233/hexo-theme-stellar.git themes/stellar |
这样的好处是 fork
到自己仓库后只需点击 Fetch upstream
即可与上游原仓库保持同步。实现了既能魔改主题又可随时获取主题更新
首次:
blog
仓库 pull
到本地后,默认 pull
不包含子模块,需要在 blog
终端手动拉取子模块
或
直接使用 clone 命令
1 | git clone https://github.com/xiangshu233/blog.git |
对于仓库首次拉取子模块,可以使用:
注意
要在blog
终端下执行该命令
1 | git submodule update --init --recursive |
更新子模块主题
后期更新子模块:
1 | git submodule update --recursive --remote |
或者
1 | git pull --recurse-submodules |
子模块相关记录
场景:
某个工作中的项目A需要包含并使用项目B(第三方库,或者你独立开发的,用于多个父项目的库),如果想要把它们当做两个独立的项目,同时又想在项目A中使用项目B,可以使用Git的子模块功能。 子模块允许您将一个Git仓库作为另一个Git仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立
子模块将被记录在一个名叫 .gitmodules
的文件中,其中会记录子模块的信息:
1 | [submodule "module_name"] # 子模块名称 |
git 子模块终端操作
添加 submodule
1 | git submodule add <repo> [<dir>] [-b <branch>] [<path>] |
拉取包含 submodule 的仓库
1 | git clone <repo> [<dir>] --recursive |
获取远端 submodule 更新
1 | git submodule update --remote |
推送更新到子库
1 | git push --recurse-submodules=check |
删除 submodule
- 删除
.gitmodule
中对应submodule的条目 - 删除
.git/config
中对应submodule的条目 - 执行命令,删除子模块对应的文件夹
1
git rm --cached {submodule_path} # 注意更换为您的子模块路径