分支

  • 作用:
    • 研究新的功能或者攻关难题
    • 解决线上bug
  • 特点:
    • 分支使每个员工开发期的代码互不干扰
    • 项目开发中公用分支包括master、dev
    • 分支master是默认分支,用于发布,当需要发布时将dev分支合并到master分支
    • 分支dev是用于开发的分支,开发完阶段性的代码后,需要合并到master分支
    • 项目中每个项目成员都可以单独建立分支用于的代码开发,实现不交叉

模拟经理分支操作

  • 对比:操作分支前的代码

  • 1.进入到经理的本地仓库test007

     cd Desktop/manager/test007/
    
  • 2.查看当前分支

      git branch
    
    • 没有创建其他分支时,只有master分支

  • 3.经理创建并切换到dev分支

     git checkout -b dev
    

  • 4.经理在dev分支编辑代码

  • 5.管理dev分支源代码:addcommitpush

  • 6.dev分支合并到master分支

    • 提示:只有当dev分支合并到master分支成功,张三才能获取到num4
    • 6.1 先切换到master分支

        git checkout master
      

    • 6.2 dev分支合并到master分支

        git merge dev
      

    • 6.3 经理推送合并分支操作到远程仓库

      • 合并分支默认在本地完成,合并后直接推送即可

        git push
        

  • 7.张三同步经理合并后的num4

    • 只有当张三同步代码成功,分支合并才算成功

        cd Desktop/zhangsan/test007/
        git pull
      

BUG分支:重中之重

  • 有时当我们正在开发新功能时,出现了线上BUG。此时,必须暂停正在开发的功能,新建临时分支先解决线上BUG。

以下代码为模拟张三解决线上BUG:v1.0版本出错

  • 1.张三切换到dev分支

  • 2.张三在dev分支上编辑代码

  • 3.线上v1.0版本突然发现bug

    • 张三暂停手中的工作,解决线上v1.0版本bug
    • 记录未提交的修改:保留现场

        git stash
      

  • 4.张三解决线上v1.0版本bug

    • 4.1 张三切换到master分支

    • 4.2 新建fixbug分支,并下载v1.0版本的代码到fixbug分支

        git checkout -b fixbug v1.0
      

    • 4.3 修复线上v1.0版本bug

    • 4.4 管理fixbug分支代码

      • addcommitpush
    • 4.5 合并fixbug分支到master分支,并推送到远程仓库

        # 切换到master分支
        git checkout master
        # 合并fixbug分支到master分支
        git merge fixbug
        # 推送合并到远程仓库
        git push
      

    • 4.6 经理打标签v1.1,发布v1.1版本

        git tag -a v1.1 -m 'version 1.1'
        git push origin v1.1
      
    • 4.7 张三恢复dev分支未提交的修改

      • 恢复到发现线上bug的那个节点
      • v2.0开发中...

        git stash list
        git stash pop
        

    • 4.8 张三将fixbug分支合并到dev分支

      • 当把未提交的修改提交后,即可将fixbug合并到dev
      • 保证张三现在开发的版本不会有v1.0版本遗留问题

          # 切换到dev分支
          git checkout dev
          # 合并fixbug分支到dev分支
          git merge fixbug
          # 推送
          git push
        

    • 4.9 张三将dev分支合并到master分支,并推送

    • 到目前为止:v1.0版本bug解决了,v2.0也开发完成了

合并分支禁用Fast Forward模式

  • 在合并分支时,默认采用Fast Forward模式
  • 该模式没有分支合并的版本记录
  • 如果需要在合并分支时记录版本需要禁用Fast Forward模式

      git merge --no-ff -m '合并描述' 分支名