如何管理GIT子模块/子树的文件结构以适配嵌入式Python项目固定目录要求?
嵌入式Python项目依赖库独立Git管理方案

Git的submodule和subtree功能都支持自定义子仓库的存放路径,不需要默认放在项目根目录,以下是两种可直接落地的方案:
方案1:Git Submodule(适合依赖库修改频率低的场景)
直接在添加子模块时指定存放路径为SRC下的目标目录即可:
- 添加依赖库子模块:
git submodule add <依赖库Git仓库地址> ./src/<依赖库文件夹名> - 首次克隆主仓库时需要加参数拉取所有子模块内容:
git clone <主仓库地址> --recursive - 已克隆主仓库的情况下手动拉取子模块内容:
git submodule update --init --recursive
该方案下主仓库仅存储子模块的对应提交哈希,依赖库的版本管理完全独立,原有import <依赖库文件夹名>.<模块名>的导入语句无需任何修改。
方案2:Git Subtree(适合依赖库高频修改、无需协作者额外学习子模块命令的场景)
subtree可以将依赖库的代码直接合并到主仓库的指定路径下,克隆主仓库即可拿到完整可运行的代码,无需额外执行子模块相关命令:
- 首次添加依赖库:
git subtree add --prefix=src/<依赖库文件夹名> <依赖库Git仓库地址> <对应分支名> --squash - 拉取依赖库的最新更新:
git subtree pull --prefix=src/<依赖库文件夹名> <依赖库Git仓库地址> <对应分支名> --squash - 向依赖库仓库推送本地修改的内容:
git subtree push --prefix=src/<依赖库文件夹名> <依赖库Git仓库地址> <对应分支名>
该方案完全兼容现有项目结构和导入规则,对不熟悉Git子模块操作的协作者更友好。
内容的提问来源于stack exchange,提问作者Rupert Powell
相关产品推荐
相关产品推荐

