我在博客系统使用了gatsby-theme-andy和gatsby-theme-brain两个插件。使用的过程中碰到了一些问题,但是这两个插件的作者都不再积极维护了。于是我将这两个插件clone下来,删掉了其中的.git
文件,并将博客的项目结构转换成yarn workspace
:
- 目录结构
.
├── gatsby-theme-andy # 本地维护的插件fork
├── gatsby-theme-brain # 本地维护的插件fork
├── site # 真实的博客内容
├── package.json
└── yarn.lock
- package.json
这样子我可以根据我的需要对依赖的插件进行修改。但问题是我丢失了单一插件的版本记录,所有的提交都由一个git repo来维护。使用git submodule可以将提交解耦。以下步骤记录了我从本地fork切换到git submodule的操作。
- 删除本的插件并提交
- 将依赖的插件引入为
git submodules
- 对
submodule
进行更改 在引入submodules后,就能方便地对submodule指向的repo进行更改。假如我对submodule内的gatsby-theme-brain进行了更改,我需要进行以下操作更新远端的主repo和gatsby-theme-brain的repo: