zoukankan      html  css  js  c++  java
  • git subtree模块化代码管理

    Git Subtree 的原理

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

    1、初始化子项目Subtree

    通过

    cd P1项目的路径
    git subtree add --prefix=用来放S项目的相对路径 S项目git地址 xxx分支

    这样的命令,把S项目(我们姑且叫他S项目)的代码下载到--prefix所指定的目录——我们姑且叫他S目录把,并在P1项目里自动产生一个commit(就是把S目录的内容提交到P1项目里)。

    对于P2项目也做同样的操作

    2、像往常一样更新代码

    大家在P1项目里各种提交commit,其中有些commit会涉及到S目录的更改,正如前面提到的,这是没任何关系的,大家也不会感受到有任何不一样。

    3、提交更改到子项目的Git服务器

    关键的地方来了:
    当维护这个S项目 Subtree 的人希望把最近这段时间对S目录的更改提交到S项目的 Git 服务器上时,他执行一段类似于这样的命令:

    cd P1项目的路径
    git subtree push --prefix=S项目的路径 S项目git地址 xxx分支

    Git 会遍历所有的commit,从中找出针对S目录的更改,然后把这些更改记录提交到S项目的Git服务器上

    4、更新子项目新的代码到父项目

    OK,现在S项目有大量的新代码了,P2项目也想使用这些新代码,维护P2这个Subtree的人只要执行:

    git subtree pull --prefix=S项目的路径 S项目git地址 xxx分支

    这样就可以将P2项目里S项目目录里的内容更新为S项目xxx分支的最新代码了。

  • 相关阅读:
    codevs 3641 上帝选人
    codevs 1966 乘法游戏
    codevs 1345 饥饿的奶牛
    codevs 1962 马棚问题--序列型DP
    codevs 1959 拔河比赛--判断背包内刚好装满n/2个物品
    codevs 1297 硬币
    [转载]矩阵取数游戏
    101.金明的预算方案(分组背包)
    105.(并查集结合绝对值最小的01背包)选学霸
    POJ 2528 Mayor's posters(线段树)
  • 原文地址:https://www.cnblogs.com/coder-zyz/p/6748468.html
Copyright © 2011-2022 走看看