美文网首页
Git依赖subtree

Git依赖subtree

作者: shz_Minato | 来源:发表于2019-03-27 15:24 被阅读0次

    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
    

    相关文章

      网友评论

          本文标题:Git依赖subtree

          本文链接:https://www.haomeiwen.com/subject/kzbzvqtx.html