git教程(四)--使用GIT SUBTREE集成项目到子目录
2017-03-20 23:15
190 查看
CSDN | GitHub |
---|---|
git教程(四)–使用GIT SUBTREE集成项目到子目录 | AderXCoding/system/tools/github/subtree |
git教程(二)–安装和配置git
git教程(三)–创建项目并提交更新
本文
git教程(四)–使用GIT SUBTREE集成项目到子目录
转载自
使用GIT SUBTREE集成项目到子目录
1 subtree 介绍
1.1 使用背景
例如, 在项目Game中有一个子目录
AI.
Game和
AI分别是一个独立的
git项目, 可以分开维护. 为了避免直接复制粘贴代码, 我们希望
Game中的
AI子目录与
AI的
git项目关联, 有3层意思:
AI子目录使用
AI的
git项目来填充, 内容保持一致.
当
AI的
git项目代码有更新, 可以拉取更新到
Game项目的
AI子目录来.
反过来, 当
Game项目的
AI子目录有变更, 还可以推送这些变更到
AI的
git项目.
用
git subtree可以轻松满足上面的需求.
1.2 subtree对比submodule
如果你没有用过git submodule, 你甚至可以不用了解
git submodule是什么,
submodule的基本介绍也不在本文的说明范围内. 虽然它满足了上述差不多的需求, 但是复杂难用, 以至于需要这么长一篇教程才能说清楚用法.
如果你的项目正在使用
git submodule, 你应该知道用
submodule有多么麻烦, 这里还有一篇文章专门解释
git submodule的缺点, 可以参考前面教程里的最后一段来删除
submodule(是的, 连删除步骤都非常麻烦)
使用
git subtree之后, 管理、更新都更加方便.
1.3 什么是git subtree
git subtree是一条
git子命令, 本质上
subtree是一种合并策略, 从
git v1.5.2, 官方就推荐使用
subtree代替
submodule, 所以它并不需要保存.
submodule这样的元信息.
git subtree的前提条件
subtree子命令很晚才集成到
git中, 请确保你的
git版本(使用
git --version查看) >
v1.8.0.0. 有些文章中说
v1.7.11就已经集成了, 实际上没有, 如果直接执行会看到这样的结果:
git subtree git: 'subtree' is not a git command. See 'git --help'.
如果你是在
OS X下使用
git, 推荐用
homebrew来安装新版本
2 subtree的使用
针对第一段的3条需求, 我分别说明具体的命令.2.1 创建 subtree
版本库
第一次添加子目录, 建立与git项目的关联建立关联总共有2条命令.
语法:git remote add -f <子仓库名> <子仓库地址>
解释:其中-f意思是在添加远程仓库之后, 立即执行fetch.
语法:git subtree add –prefix=<子目录名> <子仓库名> <分支> –squash
解释:–squash意思是把subtree的改动合并成一次commit, 这样就不用拉取子项目完整的历史记录. –prefix之后的=等号也可以用空格.
示例
git remote add -f ai git@github.com:aoxu/ai.git git subtree add --prefix=ai ai master --squash
2.2 从远程仓库pull更新子目录
更新子目录有2条命令.语法:git fetch <远程仓库名> <分支>
语法:git subtree pull –prefix=<子目录名> <远程分支> <分支> –squash
示例
git fetch ai master $git subtree pull --prefix=ai ai --squash
或者
git subtree pull --prefix=ai --squash git@github.com:aoxu/ai.git master
2.3 从子目录push到远程仓库
推送子目录的变更有1条命令.语法:git subtree push –prefix=<子目录名> <远程分支名> 分支
示例
git subtree push --prefix=ai ai master
3 参考资料
speackerdeckatlassian
pro git
非常棒的 SubTree 教程
一个真实场景的使用例子
Git Submodule 和 Git SubTree
Git submodule 还是 Git Subtree
使用GIT SUBTREE集成项目到子目录
相关文章推荐
- 使用GIT SUBTREE集成项目到子目录(转)
- Google Code 项目代码托管网站上 Git 版本控制系统使用简明教程
- eclipse git 插件集成与本地使用(傻瓜教程 一)
- 菜鸟教程之工具使用(七)——从GIt上导出Maven项目
- Google Code项目代码托管网站上Git版本控制系统使用简明教程
- [教程]使用MyEclipse实现集成Struts+hibernate框架的项目开发过程
- (4.5.2.3)Android Studio教程05-Git的使用(项目管理与版本控制)
- lucene使用教程6 --lucene在项目里的集成
- eclipse git 插件集成与本地使用(傻瓜教程 一)
- 关于git的具体使用教程以及在Xcode中的集成
- 教程:在iOS项目里面集成使用GHUnit。
- 【转】Google Code项目代码托管网站上Git版本控制系统使用简明教程
- eclipse git 插件集成与本地使用(傻瓜教程 一)
- Git基础使用教程:第一个Git项目
- Google Code项目代码托管网站上Git版本控制系统使用简明教程
- eclipse git 插件集成与本地使用(傻瓜教程 一)
- 菜鸟教程之工具使用(七)——从GIt上导出Maven项目
- 菜鸟教程之工具使用(七)——从GIt上导出Maven项目
- 103.项目视图分析工具Reveal集成使用教程
- 优雅的使用git搭建项目环境教程--轻松拉取、合并protected的分支