npm

lerna

submodules

配置子模块

  1. git submodule add <submodule_url> <submodule_directory> # 添加子项目

操作后main project会多出一个 .gitmodule 的配置文件,其内容大致如下:

  1. [submodule <submodule_name>]
  2. path = <local_directory>
  3. url = <remote_url>
  4. branch = <remote_update_branch_name>

管理子模块

先进入到 submodules 的路径里面:

  1. cd <submodule_directory>
  2. git fetch # 获取submodules远端源码
  3. git merge origin/<branch_name> # 合并 submodules 远端源码
  4. git pull # 获取 submodules 远端源码并合并到当前分支
  5. git checkout <branch_name> # 切换 submodules 的 branch
  6. git commit -am "change_summary" # 提交 submodules 的 commit
  7. git submodule update --remote <submodule_name> # 更新 submodules 的 master 的源码
  8. git push --recurse-submodules=check # 当 submodules commits 提交有问题的时候放弃整个push
  9. git push --recurse-submodules=on-demand # 分开提交 submodules 和 main project

同时管理多个 submodules

通过 foreach 来管理:

  1. git submodule foreach 'git stash' # stash所有 submodules
  2. git submodule foreach 'git checkout -b <branch_name>' # 所有 submodules 创建新分支
  3. git submodule foreach 'git pull' # 更新所有的子模块

bit

https://github.com/teambit/bit