zoukankan      html  css  js  c++  java
  • Git——分支详解

      在Git中,假设写了第一个版本的代码VI,然后下面又写了第二个版本的代码V2,那么V2保留的内容是相对于V1新加的内容,他们之间的关系是V2指向V1。这一条线叫做主干:master


       此时在V2的基础上,想新加一个功能G1,那么可以在V2的基础上添加一个分支,这个分支G1是创建了一个新环境来写的。再比如说此时想添加另外一个新功能G2,我们同样创建一个分支,这个分支用来写G2。G1和G2是完全不交涉的。最后如果我们确定G1和G2完成之后,我们只需要将他们合并到主干master上即可。

     


    •   现在我们有这样的一个版本的代码:

    •    查看状态:
    git log

     

    •    查看当前所处的分支,我们可以看见现在所处的分支是主干master。
    git branch

     

    •  现在我们创建一个新分支,用于开发功能G1。然后我们查看分支,发现有两个分支:一个是当前所处主干master,一个就是刚刚创建的分支G1。
      git branch G1  # 用于创建新分支
      git branch  # 查看当前所处分支

    • 我们切换到分支G1去,然后查看分支,发现现在我们处在G1分支中。

      git checkout G1

    • 现在我们开发功能G1,注意我们现在处于分支G1中。

      

      上图开发完成之后,我们查看一下状态,发现文件被修改了,接着添加到git管理,提交到版本控制,最后查看状态。所以现在我们是在G1这个新的环境中修改代码。

    git status
    git add .
    git commit -m 'G1'
    git log

       

    •  现在我们切换回到主干master中,所以现在我们处在master中,然后查看刚刚修改的文件,发现刚刚修改的文件不见了,这是因为我们是在G1中修改的,而G1是单独的一个环境,并且没有合并到master中。
    git checkout master

     

    •  现在我们创建另外一个分支G2,开发新功能G2。注意此时我们已经切换到主干master中了。
    git branch G2
    git checkout G2
    ...开发中
    git add .
    git commit -m 'G2'

     

       切换到G2之后,我们开发完G2,然后将他提交到版本控制中,并且查看他的状态,我们发现里面没有G1,只有G2和V2还有V1,这也再次说明G1和G2是单独的一个环境,没有任何交涉,他们都是通过指针指向V2。

    •   现在我们觉得G1开发成熟了,此时我们将G1合并到master上。首先我们要切换到master中,这样我们才能合并。
    git checkout master

     

       然后我们查看一下状态,只有V1,V2

       接着我们合并G1到master中

    git merge G1

     

       查看状态,相对于没有合并的,现在的主干上多了G1

    •  如果确认G1没有问题之后,我们就可以将分支G1删掉
    git branch -d G1
    •  若G2也开发完毕,这是我们也能够将G2合并到master中了。依旧切换到master上,然后合并G2
    git merge G2

       此时我们发现出现了一个报错,这说明合并文件出现了冲突。因为我们之前合并过G1,而G1和G2都属于分支,当两个分支都合并到master中时,Git不知道如何将他们合并到一起,所以会产生冲突。

      为什么合并G1不会产生冲突了?这是因为合并G1时,没有其他分支在他之前合并过。

       我们查看代码文件:

       此时,我们手动将他们合并

       最后我们执行版本控制,将他们提交即可

     

     

  • 相关阅读:
    2013,愿景
    多触式web前端开发之一:对于Touch的处理 [转]
    为什么我们常说很多时候一定要亲身经历了之后才能明白? [转]
    virtualenvwrapper 的安装和使用
    doccano在centos环境下安装,亲测可用
    pip install xxx i 清华镜像
    解决 ModuleNotFoundError: No module named 'pip'
    python3.5以后venv创建/激活/退出虚拟环境
    通过微调Transformers完成命名实体识别任务
    win10系统安装文本标注工具doccano
  • 原文地址:https://www.cnblogs.com/missdx/p/12343771.html
Copyright © 2011-2022 走看看