发布于 

关于博客主题自动更新的问题记录

设置子模块

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
2
3
[submodule "module_name"]      # 子模块名称
path = file_path # 子模块在本仓库(父仓)中文件的存储路径。
url = repo_url # 子模块(子仓库)的远程仓地址

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}    # 注意更换为您的子模块路径