git教程(四)--使用GIT SUBTREE集成项目到子目录
来源:互联网 发布:无心整合包捏脸数据 编辑:程序博客网 时间:2024/05/22 10:57
AderXCoding/system/tools/github/subtree
Git教程(一)—-初识Git
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 参考资料
speackerdeck
atlassian
pro git
非常棒的 SubTree 教程
一个真实场景的使用例子
Git Submodule 和 Git SubTree
Git submodule 还是 Git Subtree
使用GIT SUBTREE集成项目到子目录
- git教程(四)--使用GIT SUBTREE集成项目到子目录
- Git Subtree 的使用
- Git subtree 日常使用
- git 拆分项目 子目录
- git(十三)-git subtree
- Git使用教程(四)
- 171 git subtree 管理子项目
- 使用git上传项目到Github之新手教程
- (git简单教程)使用git命令上传本地项目到github项目
- Git Subtree 的介绍及使用
- git subtree详解及使用场景
- Git Subtree 的介绍及使用
- 使用git的subtree将已有项目的某个目录分离成独立项目
- 如何将GIT集成到PHPSTORM使用
- 如何将GIT集成到PHPSTORM使用
- git subtree 的使用方法
- git subtree用法
- git subtree 的安装
- 使用myecplise工具的调试技巧
- mysql 数据插入时的一些问题
- JSON Web Tokens(JWT)介绍
- 驱动程序无法通过使用安全套接字层(SSL)......
- sjoj学习笔记 1008 二哥买期货
- git教程(四)--使用GIT SUBTREE集成项目到子目录
- codeforces-gym-100187-F【贪心】
- maven简介
- Codeup 算法笔记2.7 指针E
- 在Chrome中查看ssl证书
- 解决yum安装报错Protected multilib versions
- Android的swift语言Kotlin中文开发文档
- ZOJ
- 指向父类的指针可以指向子类的对象