zoukankan      html  css  js  c++  java
  • GIT学习之路第五天 分支管理

    本文参考廖雪峰老师的博客进行总结,完整学习请转廖雪峰博客

    5.1创建与合并分支

    • 首先创建dev分支,然后切换dev分支
    $git checkout -b dev(包含创建并切换)
    等价于<->
    $git branch dev
    $git checkout dev
    • 然后,用git branch查看当前分支
    git branch 会列出所有的分支,当前分支用*标记
    • 现在可以在dev分支上正常提交
    • 最后,把dev分支上的工作成果合并到master分支上
      注意先切换回master分支,在进行合并
    $git merge dev
    • 合并完成后,可以放心删除dev分支
    $git branch -d dev
    ($git branch -D dev 强制删除)

    小结

    Git鼓励大量使用分支:

    查看分支:git branch

    创建分支:git branch name

    切换分支:git checkout name

    创建+切换分支:git checkout -b name

    合并某分支到当前分支:git merge name

    删除分支:git branch -d name

    5.2 解决冲突

    当当前分支和主分支都有提交时,在merge的时候回出现冲突。
    这里写图片描述
    解决冲突的方法是手动解决冲突再提交
    冲突解决示意图

    $git log 命令带参数可以查看分支的合并情况
    • 最后同理,删除分支,工作完成。

    5.3分支管理策略

    通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

    如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

    下面我们实战一下–no-ff方式的git merge:

    $git merge --no-ff -m "merge with no-ff" dev
    (参数表示禁用fast foward,采取普通模式合并)
    $git log --graph
    $git log --graph --pretty=oneline --abbrev-commit
    (git log用来查看分支历史)

    这里写图片描述

    小结

    Git分支十分强大,在团队开发中应该充分应用。

    合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

    5.4 BUG分支

    修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

    当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

    5.5 多人协作

    当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。

    $git remote -v
    (查看远程库的信息)
    • 推送分支
    $git push origin master
    或者
    $git push origin dev

    master分支是主分支,因此要时刻与远程同步;

    dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

    bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

    feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

    • 抓取分支 git pull

      因此,多人协作的工作模式通常是这样:

    首先,可以试图用git push origin branch-name推送自己的修改;

    如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

    如果合并有冲突,则解决冲突,并在本地提交;

    没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

    如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch –set-upstream branch-name origin/branch-name。

    这就是多人协作的工作模式,一旦熟悉了,就非常简单。

    小结

    查看远程库信息,使用git remote -v;

    本地新建的分支如果不推送到远程,对其他人就是不可见的;

    从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

    在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

    建立本地分支和远程分支的关联,使用git branch –set-upstream branch-name origin/branch-name;

    从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

  • 相关阅读:
    Xml 和Json解析
    Block高级使用 传值
    UIImagePickerController
    单例传值
    eclipse常用快捷键
    sql去掉多条重复只显示一条
    oracle 游标使用
    oracle 去掉重复的数据
    oracle 把一行用特殊符号分隔变为多行
    oracle 去掉锁表
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9387337.html
Copyright © 2011-2022 走看看