Better

Ethan的博客,欢迎访问交流

多项目之间共享代码

使用下 Subtree,顺带对比下 Submodule

方案

多个项目间同步子项目

  • Git Submodule:这是 Git 官方以前的推荐方案
  • Git Subtree:从 Git 1.5.2 开始,Git 新增并推荐使用这个功能来管理子项目
  • npm:node package manager,实际上不仅仅是 node 的包管理工具

npm 侧重于包的依赖管理,但没办法双向同步,更适用于子项目比较稳定的情形。Git Submodule 和 Git Subtree 都是官方支持的功能,但不具有依赖管理的功能

Submodule

submodules 类似于引用

  • 通过 .gitmodules 记录引用关系
  • 主仓库通过一个 submodule 的 commitID 进行关联
  • 常规命令
    • git submodule add
    • git submodule init
    • git submodule update
  • 工具类命令
    • git submodule foreach git checkout dev

Subtree

subtree 类似于拷贝

  • 不会生成相关的配置文件
  • 子模块相当于主仓库里的普通目录,如果修改了字模块的文件,在主仓库直接使用 git push 提交,这时候会直接提交到父仓库
  • 缺点:需要学习新的指令,子仓库的更新与推送指令相对复杂
  • 常规命令
    • git subtree add --prefix=module_location_dir remove_git_url commitId:Git 会遍历所有的 commit,从中找出针对共享目录的更改,然后把这些更改记录提交到共享项目的 Git 服务器上
    • git subtree pull
    • git subtree push
    • git subtree merge
    • git subtree split 基于已有代码拆分子仓库


留言