转载请注明原文地址: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. TF:Tensorflor之session会话的使用,定义两个矩阵,两种方法输出2个矩阵相乘的结果—Jason niu

    import tensorflow as tf matrix1 = tf.constant([[3, 20]]) matrix2 = tf.constant([[6], [100]]) product ...

  2. Knn:Knn实现对150朵共三种花的实例的萼片长度、宽,花瓣长、宽数据统计,根据一朵新花的四个特征来预测其种类

    from sklearn import neighbors from sklearn import datasets knn = neighbors.KNeighborsClassifier() ir ...

  3. pdf文件去掉广告,水印,背景和删除密码方法收藏

    对于学习资料中,pdf文件中的出现的频繁的广告内容真的让人看了很烦,怎么删除呢,后来发现有一款工具foxitphantom可以直接删除,具体操作是,先用该软件打开,然后选择Edit->Heade ...

  4. 躲不掉的 lambda 表达式

    lambda 表达式是 Java8 的新特性,虽说都发布很久了,但是不到万不得已是肯定不会研究这个的,现在就是那不得不学习的时候了. 本文主要说一下什么 lambda 表达式.Java 中为什么要有 ...

  5. SpringBoot使用事务

    事务是很多项目中需要注意的东西,有些场景如果没有加事务控制就会导致一些脏数据进入数据库,本文简单介绍SpringBoot怎样使用事务. 本文使用的是之前整合JPA的文章,具体可以参考 传送门. 无论是 ...

  6. 60.Search Insert Position.md

    描述 给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引.如果没有,返回到它将会被按顺序插入的位置. 你可以假设在数组中无重复元素. 您在真实的面试中是否遇到过这个题? 样例 Given ...

  7. C#常用字符串函数

    Compare 比较字符串的内容,考虑文化背景(场所),确定某些字符是否相等 CompareOrdinal 与Compare一样,但不考虑文化背景 Format 格式化包含各种值的字符串和如何格式化每 ...

  8. mybatis自动生成service、dao、mapper

    1.config.properties ## 数据库连接参数 jdbc.driverClass = com.mysql.jdbc.Driver jdbc.url = jdbc:mysql://loca ...

  9. 2160 母猪的故事 ACM 数学规律

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2160 中文题目,很简单,找规律就好. 自己画树状图找规律,开始想复杂了,找的规律:Fn=2*F(n-1)- ...

  10. Struts2网页面传值两种方式

    第一种方式: /** 列表 */ public String list() throws Exception { List<Role> roleList = roleService.fin ...