转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/8427796.html

场景一:已有一个大项目,需要把其中一部分内容独立出来作为共用子项目,被其他项目引用

一:先分拆

cd 项目A
git subtree split -P 项目A的某个目录 -b 子项目名
cd ../
mkdir tempDir
cd tempDir
git init
git pull ../项目A 子项目名
git remote add 子目录名 子项目仓库地址
git push 子项目 -u 分支
git filter-branch -f --index-filter "git rm -r -f -q --cached --ignore-unmatch 子项目名" --prune-empty HEAD //清理掉原来的commit记录

二:再在其他项目中引用子项目

cd 项目B
git remote add 子项目源名称 子项目git地址 //添加子项目源
git subtree add --prefix 项目B中用来存放子项目的目录名 子项目源名称 分支

三:在父项目中提交对子项目的修改

git subtree push --prefix 项目B中用来存放子项目的目录名  子项目源名称 分支//提交代码

四:在父项目中拉取子项目的更新

git subtree pull --prefix 项目B中用来存放子项目的目录名  子项目源名称 分支//更新代码

场景二:将一个已有项目作为子项目,被其他项目引用

一:在git上创建一个仓库存放子项目

二:在其他项目中引用子项目

cd 项目B
git remote add 子项目源名称 子项目git地址 //添加子项目源
git subtree add --prefix 项目B中用来存放子项目的目录名 子项目源名称 分支

三:在父项目中提交对子项目的修改

git subtree push --prefix 项目B中用来存放子项目的目录名  子项目源名称 分支//提交代码

四:在父项目中拉取子项目的更新

git subtree pull --prefix 项目B中用来存放子项目的目录名  子项目源名称 分支//更新代码

参阅文献:

http://blog.csdn.net/bingshushu/article/details/51244480

https://segmentfault.com/a/1190000003969060

使用Git Subtree在多个项目中共用同一个子项目的更多相关文章

  1. [git]安装git-pylint-commit-hook提高python项目中的代码质量

    什么是'git-pylint-commit-hook' 我在工作中,团队为了保证代码和提高代码的质量,要求每个项目都要求安装git-pylint-commit-hook,它是个钩子,会在你提交代码到本 ...

  2. git篇之二----团体项目中使用git

    上篇说了git的简单入门,本篇来说一下在团体项目中我们该如何简单使用git 一般来说,当我们进入公司之后,就前端项目而言,若是有多个同事共同开发一个系统,我们可能会每个人去负责各自的模块. 若是人员较 ...

  3. 【RocketMQ】同一个项目中,同一个topic,可以存在多个消费者么?

    一.问题答案 是不可以的 而且后注册的会替换前注册的,MqConsumer2会替换MqConsumer,并且只结束tag-2的消息 /** * @date 2019/05/28 */ @Compone ...

  4. salesforce零基础学习(九十九)Git 在salesforce项目中的应用(vs code篇)

    本篇参考: https://code.visualstudio.com/docs/editor/versioncontrol https://git-scm.com/doc https://git-s ...

  5. git subtree模块化代码管理

    Git Subtree 的原理 首先,你有两个伟大的项目——我们叫他P1项目.P2项目,还有一个牛逼的要被多个项目共用的项目——我们叫他S项目.我们通过简要讲解使用Subtree来同步代码的过程来解释 ...

  6. 手把手教你把 Git 子模块更新到主项目

    本文以 skywalking-rocketbot-ui子模块合并到 skywalking 为例,手把手教你如何把 Git 子模块更新到主项目中去. 首先,把fork的skywalking项目克隆到本地 ...

  7. PHP项目中composer和Git的组合使用

    highlight: 在国内由于众所周知的原因,composer的package可能无法访问,解决办法是使用中国的全镜像: composer config -g repositories.packag ...

  8. 使用GIT SUBTREE集成项目到子目录(转)

    原文:http://aoxuis.me/post/2013-08-06-git-subtree 使用场景 例如,在项目Game中有一个子目录AI.Game和AI分别是一个独立的git项目,可以分开维护 ...

  9. 在VS项目中通过GIT生成版本号作为编译版本号

    上一篇博客写了如何在 .Net 项目使用 SVN 作为版本控制工具时生成与代码对应的组件版本号.虽然在公司一直使用 SVN ,但我却对 GIT 情有独钟(可能要归功于那段捣鼓 ROM 的时光),但少有 ...

随机推荐

  1. 记录pageHelper分页orderby的坑

    pageHelper的count查询会过滤查询sql中的order by条件! pageHelper分页功能很强大,如果开启count统计方法,在你执行查询条件时会再执行一条selet count(* ...

  2. 2017-2018-2 20165220『Java程序设计』课程 结对编程练习_四则运算

    需求分析 题目要求 一个命令行程序实现: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确率 需求理解 输入:需要计算的式子 ...

  3. NSL:SOFM神经网络实现预测哪个样本与哪个样本处在同一层,从而科学规避我国煤矿突水灾难—Jason niu

    load water_data.mat attributes = mapminmax(attributes); P_train = attributes(:,1:35); T_train = clas ...

  4. Django之Models(三)

    Django之Models(三) 创建多对多关系 第一种方式:创建多对多的关系authors=models.ManyToManyField("Author") class Publ ...

  5. 附001.kubectl介绍及使用

    一 kubectl介绍 1.1 kubectl概要 kubectl控制Kubernetes集群管理器,使用Kubernetes命令行工具kubectl在Kubernetes上部署和管理应用程序.使用k ...

  6. Mysql You can change this value on the server by setting the max_allowed_packet' variable. 异常

    MySQL根据配置文件会限制server接受的数据包大小. 有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败. 查看目前配置, Windows 系统 配置文件为 my ...

  7. Urozero Autumn 2016. UKIEPC 2016

    B. Build a Boat 首先求出每块船舱的面积$S$,然后进行$m$次二分,得到每个切割线的位置. 为了计算某个切割线形成的区域的面积,需要将多边形整理成上边界和下边界,分别二分出断点位置,中 ...

  8. C++程序设计方法3:禁止自动类型转换

    禁止自动类型转换 explicit #include <iostream> using namespace std; class Src;//前置类型声明,因为在Dst中要用到Src的类 ...

  9. yii2 创建模块modules

    方案一:如果模块儿较少,不用专门给模块儿目录定义别名,酱紫做就ok啦. 1.在项目根目录下面创建一个 modules 目录. 2.进入 gii : http://localhost/basic/web ...

  10. meta中minimal-ui属性

    <meta id="viewport" name="viewport" content="width=device-width, user-sc ...