这篇文章上次修改于 1181 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
今天在为米切机器人(NoneBot2)编写插件时希望其中编写的插件也能在Github进行独立的发布。起初我尝试将插件目录放置于机器人的项目根目录之外,让各插件仓库与机器人仓库相互独立,但Python的NoneBot2并不能从更高的父级目录中加载插件,这一想法至此废弃。之后我将思路转向使用git中的submodule(子模块),它能有效的将多个仓库独立存储发布,并能够在主要仓库的浏览中链接到子仓库,而不重复存储。
接下来是使用过程中的一些流程记录:
独立建仓
- 使用
mv
或者cp
命令将准备作为子模块的插件移出主仓库目录 - 在子模块目录中独立创建Git仓库,并同步推送到新仓库
echo "# <name>" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin <url>
git push -u origin main
添加子模块
接下来将新的仓库链接作为子模块添加到主仓库的指定路径
git submodule add <url> <path>
Submodule 详细用法
添加
git submodule add <url> <path>
为子模块Git地址 为子模块存储路径
删除
添加了错误的路径或子项目出现问题时可以对子项目进行删除,步骤如下
rm -rf <path>
vim .gitmodules (删除.gitmodules文件中子模块相关条目)
vim .git/config (删除配置项中子模块相关条目)
rm .git/module/<path> (删除目录中的对应子模块)
更新
先对主项目pull,然后执行更新
git pull
git submodule update
仓库管理
克隆带子模块的仓库
方法1:先克隆主项目,再初始化与更新子项目
git clone <url>
cd <path>
git submodule init
git submodule update
方法2:[推荐] 使用递归参数克隆
git clone <url> --recursive
没有评论