博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git subtree用法
阅读量:7004 次
发布时间:2019-06-27

本文共 961 字,大约阅读时间需要 3 分钟。

hot3.png

使用场景

例如,在项目Game中有一个子目录AI。Game和AI分别是一个独立的git项目,可以分开维护。为了避免直接复制粘贴代码,我们希望Game中的AI子目录与AI的git项目关联,有3层意思:

  1. AI子目录使用AI的git项目来填充,内容保持一致。

  2. 当AI的git项目代码有更新,可以拉取更新到Game项目的AI子目录来。

  3. 反过来,当Game项目的AI子目录有变更,还可以推送这些变更到AI的git项目。

用git subtree可以轻松满足上面的需求。

git subtree用法

针对第一段的3条需求,我分别说明具体的命令。

1. 第一次添加子目录,建立与git项目的关联

建立关联总共有2条命令。

语法:git remote add -f <子仓库名> <子仓库地址>

解释:其中-f意思是在添加远程仓库之后,立即执行fetch。

语法:git subtree add --prefix=<子目录名> <子仓库名> <分支> --squash

解释:–squash意思是把subtree的改动合并成一次commit,这样就不用拉取子项目完整的历史记录。–prefix之后的=等号也可以用空格。

示例

$git remote add -f ai https://github.com/aoxu/ai.git  $git subtree add --prefix=ai ai master --squash

2. 从远程仓库更新子目录

更新子目录有2条命令。

语法:git fetch <远程仓库名> <分支>

语法:git subtree pull --prefix=<子目录名> <远程分支> <分支> --squash

示例

$git fetch ai master  $git subtree pull --prefix=ai ai --squash

3. 从子目录push到远程仓库(确认你有写权限)

推送子目录的变更有1条命令。

语法:git subtree push --prefix=<子目录名> <远程分支名> 分支

示例

$git subtree push --prefix=ai ai master

转载于:https://my.oschina.net/jellypie/blog/487619

你可能感兴趣的文章
分布式全文检索引擎之ElasticSearch
查看>>
数组名和指针区别
查看>>
实现子数组和绝对值差最小 - Objective-C
查看>>
明天支付宝就开始提现收费了!这几招可以让你受用
查看>>
mediascanner流程
查看>>
vue axios全攻略
查看>>
GZIP CSS JS
查看>>
HDU 3635 Dragon Balls
查看>>
基础DOM和CSS操作(三)
查看>>
HTTP 02 HTTP1.1 协议
查看>>
手机端网页web开发要点
查看>>
正则表达式中 group groups区别
查看>>
JBoss + EJB3 + MySql : 开发第一个EJB
查看>>
浏览器请求阻塞到底是怎么回事?我们为什么要把静态资源分服务器放置?
查看>>
Oracle数据库基础知识
查看>>
2011年9月最新整理的10个有趣的jQuery插件集合
查看>>
Python的日志配置和处理
查看>>
小程序设置全屏显示
查看>>
c++ bind的简单使用 实例
查看>>
(翻译)Angular 1.3中的验证器管道
查看>>