zoukankan      html  css  js  c++  java
  • GitHub教程学习笔记3---分支管理

    廖雪峰Lec11:创建和管理分支
      git branch dev //创建分支命名为:dev
      git checkout dev //将指针HEAD由当前分支切换到dev
      git branch //查看当前分支目录,应该有master和dev
      cat readme.txt //查看内容,记为view1
      修改readme.txt
      git add readme.txt
      git commit -m "branch test" //对readme.txt修改提交到当前分支dev

      git checkout master //切换到master
      cat readme.txt //查看内容,可以发现与view1相同

      git merge dev //将分支dev合并到当前分支master
      git branch -d dev //删除分支dev
      git branch //只剩下master

    小结

    Git鼓励大量使用分支:
    查看本地分支:git branch
    查看本地和远程分支:git branch -a
    创建分支:git branch <name>
    切换分支:git checkout <name>
    创建+切换分支:git checkout -b <name>
    合并某分支到当前分支:git merge <name>
    删除分支:git branch -d <name>


    廖雪峰Lec12:解决冲突
      git checkout -b feature1 //创建并切换分支
      修改readme.txt //记为修改1
      git add readme.txt
      git commit -m "modification1"

      git checkout master //切换到master
      修改readme.txt //记为修改2
      git add readme.txt
      git commit -m "modification2"

      git merge feature1 //合并分支,此处会提示冲突,因为master和feature1内容为两个版本
      git status //status也会提示有冲突
      cat readme.txt
      vi readme.txt //查看并手动解决冲突
      git add readme.txt
      git commit -m "fixed conflict" //解决冲突重新提交

      git log --graph --pretty=oneline --abbrev-commit //用带参数的git log //查看分支的合并情况
      git branch -d feature1 //删除分支feature1

    廖雪峰Lec13:分支管理策略
      git checkout -b dev //创建新分支
      vi readme.txt //修改readme.txt
      git add readme.txt
      git commit -m "add merge"

      git checkout master //切换回master
      git merge --no-ff -m "merge with no-ff" dev //使用带参数的merge,no-ff表示不适用fastforward
      git log --graph --pretty=oneline --abbrev-commit //查看分支合并情况

    小结

    1.实际开发中,master应该是非常稳定的一个分支,只用来发布新版本,平时不能在上面干活;
    干活都是在dev分支上,也就是说dev分支是不稳定的,小伙伴们时不时更新dev,发布1.0版本时再合并到master上;
    小伙伴们各自建立自己的分支比如:LuffysMan,Lisann
    2.合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

     

    廖雪峰Lec14:Bug分支

    //假设当前正在进行readme.txt 2.0版本的制作,处于分支dev,突然接到代号101bug修复任务,要求紧急修复master上readme.txt的一个bug
    git status //处于分支dev,且readme.txt 已被修改
    git stash //保存当前工作状态到另一个。。平行宇宙吧
    git status //查看状态,工作区是干净的

    git checkout master //在master上创建issue101分支用来修复bug
    git checkout -b issue101
    vi readme.txt //修复bug
    git add readme.txt
    git commit -m "fix bug101"
    git checkout master
    git merge --no-ff -m "merged bug fix 101" issue101 //合并分支到master
    git branch -d issue101

    git checkout dev //切换回dev准备继续readme.txt 2.0版本的制作~~
    git status //发现工作区是空的
    git stash list //查看保存到平行宇宙的工作
    git stash pop //从平行宇宙取回工作哈哈
    git stash list //平行宇宙里面是空的

    小结

    对此场景有疑问的,我觉得这个网友的说法还挺好滴(下面内容来自Shi_Chunyuan)
    1、master 上面发布的是A的1.0版本
    2、dev 上开发的是A的2.0版本
    3、这时,用户反映 1.0版本存在漏洞,有人利用这个漏洞开外挂
    4、需要从dev切换到master去填这个漏洞,正常必须先提交dev目前的工作,才能切换。
    5、而dev的工作还未完成,不想提交,所以先把dev的工作stash一下。然后切换到master
    6、在master建立分支issue101并切换.
    7、在issue101上修复漏洞。
    8、修复后,在master上合并issue101
    9、切回dev,恢复原本工作,继续工作。

    补充:git stash pop 等同于 git stash apply, git stash drop


    廖雪峰Lec15:Feature分支

    //你正在dev上码代码,突然boss让你开发一个新的NB Game; OK,fine,let's do it
    git status //处于dev
    git branch -b feature-nbgame //新建分支用于开发nbgame!
    vi nbgame.py //成功搞定
    git add nbgame.py
    git commit -m "add nbgame"
    git checkout dev //cao,boss说资金不够,nbgame项目取消,代码要删除;OK,f(f)i(u)n(c)e(k)
    git branch -d feature-nbgame //纳尼,删除不了?
    git branch -D feature-nbgame //用大写参数-D即可

    小结

    开发一个新的feature,最好新建一个分支
    如果要丢弃一个没有合并过的分支,可以通过git branch -D feature-name 强行丢弃

  • 相关阅读:
    面向对象
    模块
    第四十课、前置操作符和后置操作符------------------狄泰软件学院
    uva -- 10766
    poj -- 3468
    poj --3264
    cstring 的重载
    hihocode ---1032
    省赛总结
    13周总结
  • 原文地址:https://www.cnblogs.com/LuffysMan/p/9859087.html
Copyright © 2011-2022 走看看