Git依赖subtree

Git依赖——subtree

 与submodule相比,subtree的优势在于主项目与子模块的双向 通信,即主项目中可以更改子模块的 文件,并将改动推送至子模块的远程git库。
 subtree的操作:增、改、删。

subtree的增加

 主项目中 依赖 子模块

前期准备:初始化 两个项目 parent和child,

步骤:
    ①主项目中添加 子项目远程库
        git remote add 别名 url
    ②主项目中依赖子项目:
        git subtree add --prefix=路径 别名 分支 --squash
        
        路径:子项目文件的存放位置
        别名:第一步添加 远程库 所起的别名
        分支:拉取子项目的分支
        --squash:添加依赖的方式,该参数 会将 子项目的多次提交 压缩为 一次提交
        
     
     git remote add sub-origin url //添加子模块,子模块的别名为sub-origin
     
     git subtree add --prefix=subtree sub-origin master --squash
     控制台输出:
        git fetch sub-origin master
        warning: no common commits //并没有共同的提交
        ···
            * branch            master     -> FETCH_HEAD //当前的master分支 指向了 FETCH_HEAD
            * [new branch]      master     -> sub-origin/master //新建了分支 
        Added dir 'subtree' //新建了 subtree文件件
     
     git status
     控制台输出:
        On branch master
        Your branch is ahead of 'origin/master' by 2 commits. //分支比 本地远程分支 多了两次提交
         (use "git push" to publish your local commits)
        nothing to commit, working tree clean

    为什么两次呢? 因为squash
    git log
    控制台输出:
    commit 29583eab27f08f43324aa1a591a7ea2d6a30c898 //这次提交是 拉取文件之后 合并,合并作为一次提交记录
    Merge: 40a8a5d 19b14f6  //合并的id
        Merge commit '19b14f64f1ea9c135b7ea4bac1936a62ec32616a' as 'subtree'

    commit 19b14f64f1ea9c135b7ea4bac1936a62ec32616a //这是子模块 的提交压缩,将压缩 作为一次提交
    Squashed 'subtree/' content from commit a45b65c //从a45开始压缩
        git-subtree-dir: subtree
        git-subtree-split: a45b65c3237f74ee3ab50e32e225a2e26cb6ba58

    commit 40a8a5d994ef659cc42c9d95980dd69f91fc87a1
        init parent
    
将修改push
    git push

主模块更新子模块

 主模块修改 子模块的文件,并将文件 推送至远端。

    使用命令:
        git subtree --prefix=路径 别名 分支 --squash
        
        路径:子项目文件的存放位置
        别名:第一步添加 远程库 所起的别名
        分支:拉取子项目的分支
        --squash:添加依赖的方式,该参数 会将 子项目的多次提交 压缩为 一次提交
        
    步骤:
        ① 修改文件,并本地提交
        ② 将修改推送至 远端
            先将主模块 推送至远端 git push
            再推送子模块 git subtree push --prefix=路径 别名 分支 --squash
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 开发中我们经常会遇到这样的情况:项目越来越大,一些通用的模块我们希望将他抽离出来作为单独的项目,以便其他项目也可以...
    feil0n9wan9阅读 20,417评论 0 24
  • 获取与创建项目 创建仓库的途径有:在本地已有的目录,初始化一个新的;克隆复制一份别人的项目。 git init 在...
    daking阅读 11,638评论 3 48
  • 月有阴晴圆缺,人有悲欢离合,天下没有不散的宴席,终有人会离你而去。 有些人分开了还会再见,...
    风与歌阅读 2,750评论 0 5
  • 早上换衣服的时候,突然想起断舍离来:要想清爽,穿衣三件。 炎炎夏天自不必说,恨不得脱光光,但至少要三件,不然失了风...
    跑步的心情阅读 1,234评论 0 0

友情链接更多精彩内容