Git归并有两种策略:递归,章鱼。html
1.递归策略:当分支数只有两个的时候。git
2.章鱼策略:当分支数大于两个的时候。shell
Git会自动选择归并的方法。工具
3.子树策略:是Git另外一种归并方法。(submodule)url
它能够把另外一个子项目,嵌入到当前项目。并且会很是聪明的合并这些子项目。(之后就不会有困惑了,在引用其余项目时。)spa
Git使用submodule命令:code
#添加子模块: git submodule add ~/git/libs/lib1.git libs/lib1 #git会在项目下生成.gitmodule cat .gitmodule
[submodule "libs/lib1"] path = libs/lib1 url = ~/git/libs/lib1.git
#进入libs/lib1目录 cd libs/lib1 #操做新的库lib1,看得出是lib1本身的库remote信息。 git remote -v #进入项目根目录,初始化submodule,更新submodule(必须在根目录执行命令) cd ../../ git submodule init git submodule update
在 libs/lib1/ 目录下添加文档,发现新增长的子模块lib1,在git状态列表中,多了个(untracked content),并不会把lib1库下的全部改动,在git status体现出来。(方便了项目管理子模块)htm
像操做git同样在子模块管理git工做区。教程
注: 递归
若是在添加子模块后,不回到最上层主分支.忘记了调用命令:git submodule update,那么你极有可能再次把旧的submodule依赖信息提交上去,当调用命令:git commit -a。
参考: