You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Git向分包商隐藏核心算法代码,解决子模块方案现存问题

核心代码隐藏Git实现方案

方案1:修复现有git submodule配置(最低成本过渡)

你原来的submodule流程只需要调整两个配置即可解决现有问题:

  • 主仓库删除已提交的.gitmodules文件,并且将.gitmodules和核心子模块的目录路径一起加入主仓库的.gitignore,永远不提交到公开主仓库。这样主仓库不会记录子模块信息,分包商拉取代码时不会触发子模块拉取逻辑,也就不会报权限错误
  • 内部核心开发人员本地自行添加子模块配置,执行git submodule add <私有核心仓库地址> <子模块目录>即可,该配置只会保存在本地,不会同步给其他开发者
  • 混淆后的产物直接提交到主仓库的公开目录(比如dist/core/),分包商拉取后即可直接调用

方案2:git subtree实现(更稳定的长期方案)

subtree不需要额外的本地配置,分包商完全无感知,是该场景的最优解,操作流程如下:

内部核心开发人员初始配置

  1. 克隆公开主仓库到本地
  2. 添加核心私有仓库的远程别名:
    git remote add core-private <你的核心私有仓库Git地址>
  3. 将私有仓库挂载到本地主仓库的指定目录(示例目录为./src/core-private,可自行修改):
    git subtree add --prefix=src/core-private core-private main --squash

参数说明:--squash会将私有仓库的所有提交压缩为1个提交合并到主仓库,避免泄露私有仓库的提交历史

  1. 将src/core-private路径加入主仓库的.gitignore,确保核心源码永远不会被提交到公开主仓库

日常核心开发操作

  • 拉取私有仓库的最新代码到本地:
    git subtree pull --prefix=src/core-private core-private main --squash
  • 本地修改完核心代码后,将改动推回私有仓库:
    git subtree push --prefix=src/core-private core-private main
  • 生成minify混淆产物,将产物提交到公开主仓库的公共调用目录即可,分包商拉取主仓库就能直接拿到最新可用版本

分包商侧操作

完全不需要做任何特殊配置,正常拉取、提交主仓库代码即可,不会遇到任何权限报错,也不会出现误删子模块的提交问题

注意事项

  • 核心源码目录必须全程加入主仓库.gitignore,避免误提交泄露
  • 每次核心代码修改后必须同步更新混淆产物并提交到主仓库,避免分包商用到旧版本
  • 私有核心仓库严格管控访问权限,仅授权给内部核心开发人员

内容的提问来源于stack exchange,提问作者stoefln

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:06:03