git-subtree

多个工程,存在通用目录或文件内容

举例

工程P1,目录结构:

  • src1
    • utils1
      • test.js
    • p1.js

工程P2,目录结构:

  • src2
    • utils2
      • test.js
    • p2.js

test.js可以为共有

观察P1P2(下称主工程),我们可以把test.js 独立成一个子工程,只有一个分支master,根目录只有一个文件:

  • test.js

准备

主工程根目录最好不为空(什么文件都没有)
主工程根目录下执行:

$ git remote add 自定义名称 子工程仓库地址
$ git subtree add --prefix=项目自定义路径 自定义名称 子工程分支名称

操作之后,会将子工程根目录下所有内容(不包括项目根目录)clone项目自定义路径路径下

项目自定义路径最好不为项目根目录(/./等,我没成功-_-!!!)
自定义名称上下要对应
子工程分支名称使用子工程哪个分支

操作

主工程改动了子工程

正常push主工程之后,额外push子工程内容:

$ git subtree push --prefix=项目自定义路径 子工程仓库地址 子工程分支名称

直接在子工程改动

主工程更新引入的子工程

$ git subtree pull --prefix=项目自定义路径 子工程仓库地址 子工程分支名称

其它

主工程中对子工程内容进行了改动,那么主工程涉及到的commit记录都会在子工程中保留。

最后

谢谢阅读。

你可能感兴趣的:(git-subtree)