zoukankan      html  css  js  c++  java
  • git--分支管理

    分支

    什么叫分支呢?我们之前用git进行开发的时候,都是在主分支上(master)。你可以理解为master就是我们线上的版本,假设我们现在要开发一个新功能,我们可以单独拉个分支进行开发,在这个分支上进行开发,这样就不会影响我们之前的版本了。当我们开发了一段时间之后,发现线上有一个bug,需要紧急修复。我们可以切换到master分支上,在拉一个分支,这时,这个分支是没有我们的新开发的代码的。我们可以在这个分支上修改bug,修改完bug之后,合并到master上上线。在切换到新功能的分支上进行开发,开发完之后再和master进行合并。

     git branch

    git branch用于查看所有的分支

    我们现在master上有三个版本

     查看一下分支

    # git branch
    * master

    git branch命令会列出所有分支,当前分支前面会标一个*号

    创建分支

    既然v3版本是我们的线上版本,我们要开发新功能肯定不能在这个分支上进行更改,我们可以新建一个dev分支,在dev分支上开发新功能

    # git branch dev

    在来查看一下分支

    # git branch
      dev
    * master

    切换分支

    我们已经创建了一个dev分支,既然要在dev分支上开发新功能,那我们首先要切换到dev分支上

    git checkout 分支名称

    # git checkout dev

    查看下我们在哪个分支上

    # git branch
    * dev
      master

    *表示当前在dev分支上。

    上面我们创建了分支,然后切换了分支,其实我们可以一步完成

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

    切换分支这个动作,用switch更科学。因此,最新版本的Git提供了新的git switch命令来切换分支:

    # git switch -c dev

    既然切换到了dev分支上,那我们就开发新功能

    复制粘贴了n行代码之后。。。

    发现线上有了个bug,需要我们紧急处理,我们先把我们写的新功能提交到版本库里

    # git add .
    
    # git commit -m '新功能50%'

    既然有bug了,我们肯定优先处理bug,肯定不能在当前分支处理,新功能可能还没开发完成。我们可以新创建一个bug分支,在那个分支上进行bug修复

    首先切换到master分支,这时master上是没有我们新开发的功能代码的

    # git checkout master
    Switched to branch 'master'

    创建一个bug分支

    # git branch bug

    切换到bug分支

    # git checkout bug
    Switched to branch 'bug'

    既然我们已经切换到了bug分支上了,那我们修改bug,复制粘贴。。。

    在提交到版本库

    # git add .
    
    # git commit -m '修复bug'

    合并分支

    现在bug已经修改完了,我们要把修复bug的代码合并到master分支上发布上线

    我们要把bug分支合并到master上,所以我们要切换到master上,这时master上是没有修复bug的代码的,也就是只有v3版本的代码

    # git checkout master
    Switched to branch 'master'

    git merge 要合并的分支

    # git merge bug
    Updating b119263..21e1638
    Fast-forward
     manage.py | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)

    在去看代码,我们修复bug的代码都已经合并到master上了。

    既然我们的bug已经解决了,那bug分支就没有用了,我们可以删掉

    删除分支

    git branch -d 分支名称

    # git branch -d bug
    Deleted branch bug (was 21e1638).

    这时候在使用git branch查看就没有bug分支了

    解决冲突

    既然bug已经解决了,那我们可以继续开发我们的新功能了,切换到dev分支上

    # git checkout dev
    Switched to branch 'dev'

    复制粘贴之后,我们的新功能也开发完成了。提交到版本库

    # git add .
    
    # git commit -m '新功能完成'

    既然新功能已经完成了,就要发布上线了,切换到master上

    # git checkout master
    Switched to branch 'master'

    合并分支

    # git merge dev
    Auto-merging manage.py
    CONFLICT (content): Merge conflict in manage.py
    Automatic merge failed; fix conflicts and then commit the result.

    git告诉我们合并失败了,我们打开我们的文件

    可以看到这里失败了,这是因为我们之前拉了两个分支dev和bug,在bug分支上修复了bug之后合并到了master分支上,这时master的代码和dev的代码不一致,导致我们合并的时候,git不知道怎么合并,所以会失败,我们可以手动进行合并,然后再提交到版本库

    # git add .
    
    # git commit -m '新功能上线'

    最后在使用git log --pretty=oneline查看下版本

    # git log --pretty=oneline
    727f1a099b14080eedf72ebc87ee4fa501e39c15 (HEAD -> master) 新功能上线
    9e645c85a404d65ff6ea2a1b2dcb8f657a29f264 (dev) 新功能完成
    21e16380e4ba0dce46bb02ce530d3a82ab80dc73 修复bug
    832b337fa420e2620343f59eca32780d439a39da 新功能
    b119263bf20d6e9b1cc521ea3edd7e2d0cfa2274 v3版本
    7eb789f8b7002c432c958c281c838b3076a779a1 v2版本
    09403486af1fd13ca9f844326e1bd7c187611be8 v1

    Beyond Compare

    上面我们解决冲突是靠手工一行一行的解决的,如果有成百上千个文件有冲突,这样肯定是不行的。beyond compare提供这种比较,把所有冲突的文件找出来,然后我们只需要点点点就可以了

    首先需要安装 官网:http://scootersoftware.com/

    安装完成之后需要进行配置,执行下面的命令

    # git config --local merge.tool bc3
    # git config --local mergetool.path '你的compare的安装路径'
    # git config --local mergetool.keepBackup false

    配置完成之后只需要执行下面的命令,就会打开compare软件,自动找到有冲突的文件

    # git mergetool

     注意:上面的--local表示只在当前目录里有效,也就是如果你还有一个文件夹也被git管理,在那个里面不会生效

  • 相关阅读:
    Tomcat虚拟目录的映射方式
    Linux常用命令
    java断点调试
    破解MyEclipse
    JS判断浏览器
    css3 box-sizing详解。
    this-使用call . apply
    this-内部函数
    this-对象方法调用
    this-纯函数
  • 原文地址:https://www.cnblogs.com/zouzou-busy/p/11681331.html
Copyright © 2011-2022 走看看