美文网首页
Python学习

Python学习

作者: 逛逛_堆栈 | 来源:发表于2021-04-18 14:12 被阅读0次

    第二十五天

    Git的使用(三)分支管理

    1、master分支

    从项目创建之初,有且唯一的分支就是主分支,之后如果创建分支,就是一个一个的从分支,主分支被叫做master。我们可以将分支之间看作两个平行的宇宙,平时之间互不干扰。
    通过命令git branch查看当前工作在哪个分支。


    Git主分支master.png
    $ git branch
    * master
    #默认就是只有一个主分支master
    

    每次提交,master分支都会向前移动一步,这样,随着不断地提交,master分支的线也越来越长。

    2、分支操作

    Git中对分支操作的流程大体如下:

    2.1、创建分支dev,并将指针指向dev

    Git创建新分支.png
    $ git checkout -b dev
    Switched to a new branch 'dev'
    $ git branch
    * dev
      master
    #当前存在两个分支
    

    git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

    $ git branch dev  #创建分支
    $ git checkout dev #切换分支
    

    2.2、从分支操作

    创建dev分支后,HEAD指向dev,就表示当前分支在dev上。对工作区的修改和提交就是针对dev分支了,与主分支就没有关系了,比如新提交一次后,dev指针往前移动一步,而master指针不变:


    Git新建分支的提交.png

    分支创建切换后,我们对readme.txt修改,此时我们可以通过git branch查看当前所在分支。

    $ git branch
    * dev  #当前所在分支是dev分支
      master
    

    对readme.txt修改后进行添加到暂存库并提交。

    $ vi readme.txt
    d/python_db (dev)
    $ git add readme.txt
    d/python_db (dev)
    $ git commit -m '这是dev分支首次提交'
    [dev 2bef9f9] 这是dev分支首次提交
     1 file changed, 1 insertion(+)
    

    我们看到现在是dev分支的首次提交(参考上图)。

    2.3、分支合并

    当在dev上的工作完成了,就可以把dev合并到主分支master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并。


    Git分支合并.png

    分支合并第一步就需要先切换为主分支

    $ git checkout master
    Switched to branch 'master'
    # 提示切换为master分支
    

    分支切换后,我们可以在主分支查看git操作日志。

    $ git log
    # 这时候看不到我们刚在dev分支下的提交日志的,同时你可以打开readme.txt文件却看不到我们刚加入的数据,说明分支间的互不干扰。
    

    分支切换后,我们就可以合并分支了。

    $ git merge dev
    Updating 495a251..2bef9f9
    Fast-forward
     readme.txt | 1 +
     1 file changed, 1 insertion(+)
    

    我们可以通过git log命令以及查看readme.txt文件验证是否合并成功。

    2.4、从分支删除

    合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支:


    Git删除从分支.png
    $ git branch -d dev
    Deleted branch dev (was 2bef9f9).
    # 提示删除dev分支
    

    再次通过git branch查看分支,只有主分支master了。

    $ git branch
    * master
    

    3、冲突解决

    我们在合并分支的时候,并不是一帆风顺的,有时候是会出现冲突的。如下:
    (1)创建一个新分支dev

    $ git checkout -b dev
    Switched to a new branch 'dev'
    

    (2)修改readme.txt,并提交

    $ vi readme.txt  #修改文件
    $ git add readme.txt  #添加缓存区
    $ git commit -m '再次创建dev分支 提交2'
    [dev 6e64770] 再次创建dev分支 提交2
     1 file changed, 1 insertion(+)
    
    

    (3)切换回master分支,修改同样的文件,并提交

    $ git checkout master #切换主分支
    $ vi readme.txt  #再次修改文件
    $ git add readme.txt  #再次添加缓存区
    $ git commit -m 'master分支新天一行数据提交'
    [master 3700eed] master分支新天一行数据提交
     1 file changed, 2 insertions(+)
    
    

    (4)分支合并

    $ git merge dev
    Auto-merging readme.txt
    CONFLICT (content): Merge conflict in readme.txt
    Automatic merge failed; fix conflicts and then commit the result.
    # 出错
    # 合并失败,修正冲突后提交修正后的结果
    

    (5)冲突修正
    通过命令git status找到冲突的文件

    $ git status
    On branch master
    You have unmerged paths.
      (fix conflicts and run "git commit")
      (use "git merge --abort" to abort the merge)
    
    Unmerged paths:
      (use "git add <file>..." to mark resolution)
            both modified:   readme.txt
    
    no changes added to commit (use "git add" and/or "git commit -a")
    

    打开冲突的readme.txt文件,你会发现文件变成如下:

    Hello Git! ---first
    Hello Git! ---second
    Hello Git! ---third
    Hello Git! ---fouth
    Hello Git! ---fifth
    Hello this is dev branch!
    <<<<<<< HEAD
    Hello master分支提交!
    
    =======
    Hello this is dev second 测试!
    >>>>>>> dev
    

    需要自己手动修正错误。
    修正后,需要重新添加缓存区以及提交。

    $ git add readme.txt  #修正后添加缓存区
    $ git commit -m '冲突修正后数据提交'
    
    

    相关文章

      网友评论

          本文标题:Python学习

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