• 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时,没有其他分支在他之前合并过。

       我们查看代码文件:

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

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

     

     

  • 相关阅读:
    Asp.NET 4.0 ajax实例DataView 模板编程1
    ASP.NET 4.0 Ajax 实例DataView模板编程 DEMO 下载
    部分东北话、北京话
    .NET 培训课程解析(一)
    ASP.NET 4.0 Ajax 实例DataView模板编程2
    ASP.NET Web Game 架构设计1服务器基本结构
    ASP.NET Web Game 构架设计2数据库设计
    TFS2008 基本安装
    Linux上Oracle 11g安装步骤图解
    plsql developer远程连接oracle数据库
  • 原文地址:https://www.cnblogs.com/missdx/p/12343771.html
Copyright © 2020-2023  润新知