小蚂蚁学习git(3)——Git建立和合并分支、解决冲突、修复bug

    接上篇(http://my.oschina.net/woshixiaomayi/blog/521519)继续。
git

    6、建立与合并分支。
app

    在版本回退中,每次提交,Git都把他们串成一条时间线,这条时间线就是一个分支。在Git中,这个分支叫主分支,即master分支。HEAD严格来讲不是指向提交,而是指向master,master才是指向提交的,so,HEAD指向的就是当前分支。
.net

    建立新的分支dev,而且切换到dev分支上,命令:
blog

    git checkout -b dev    建立新的分支,而且切换到该分支上,这至关于两条命令:
开发

    git branch dev    建立分支dev
get

    git checkout dev    切换到分支dev
it

    git branch    查看分支,会列出全部分支,而且会在当前的分支上添加一个星号。
ast

    场景:在dev分支上,在readme.txt中作出一点修改。而后在master分支上查看。
bug

    能够发如今master分支上是看不到dev分支新修改的内容的,这时候咱们须要把dev分支上的内容合并到master上,切换到master分支,使用命令:
apply

    git merge dev    将目标分支合并到当前分支上。如今再来查看master分支中的readme.txt,就可以看到

在dev分支上修改的内容了。值得注意的是,在合并中下方出现的提示文字,有一个Fast-forward,Git告诉咱们,此次合并是“快进模式”,也就是直接把master分支指向dev的当前提交,因此合并速度很是快。

    合并以后删除dev分支,命令:

    git branch -d dev    加上一个-d,即为删除该分支。

    那么如何解决冲突呢?

    场景:建立一个新的分支,fenzhi1,修改了readme.txt文件。而后在master分支上也一样修改了readme.txt,这时候在master分支上进行合并。能够看到提示信息说:Automatic merge failed;冲突诞生了。这时候,可使用 git status ,查看一个状态,会告诉你:both modified:readme.txt。有两条修改信息。

    cat readme.txt 查看一下内容,

    <<<<<<<<<<<<<<<HEAD

    aaaaaaaaaaaaaaaaaaaaaaaaaa

    ==================

    bbbbbbbbbbbbbbbbbbbbbb

    >>>>>>>>>>>>>>>fenzhi1

    <<<HEAD是指主分支修改的内容,>>>>>>>fenzhi1 是指fenzhi1上修改的内容,如今能够修改这个文件的内容,而后add,commit提交便可。这样合并时冲突的问题就解决了。

    分支管理策略

    一般合并分支时,git通常使用“Fast forward”模式,上面也有提到。在这种模式下,删除分支后,会丢掉分支信息,可使用参数 --no-ff 来禁用“Fast forward”模式,命令:

    git merge --no-ff -m "使用no-ff合并分支" dev    使用--no-ff合并分支dev

    git branch -d dev    删除dev分支

    git  log --graph --pretty=oneline --abbrev-commit    能够看到被删除的版本号还在。

    分支策略:首先master主分支应该是很是稳定的,也就是用来发布新版本的,通常状况下不容许在上面干活,干活通常状况下在新建的其余分支上,干完活,能够把dev分支代码合并到主分支master上来。

    7、bug分支

    在开发中,会常常碰到bug问题,那么就须要修复,每一个bug均可以建立一个临时分支来修复,修复完成后,在合并分支,而后将临时分支删除便可。

    场景:在工做中忽然接到了一个404bug,咱们能够建立一个404分支来修复它,可是如今当前的dev分支上还有一些工做没有提交,没法建立和切换分支,这个怎么办呢?Git还提供了stash功能,能够把当前工做现场隐藏起来,等之后恢复了现场继续工做,命令:

    git stash    将当前的工做隐藏起来,这时候使用git status,来查看状态,就会发现nothing to commit,working directory clean.工做区很干净。如今就能够建立分支,修复bug了。修改完成一切都搞定以后,仍是要回到dev分支继续干活的。

    git checkout dev  回到dev分支

    git stash list    查看隐藏起来的工做现场

    将工做现场恢复有两个命令:1,git stash apply 恢复,恢复以后,stash内容不会删除,若是要删除,须要使用命令git stash drop来删除。2,使用git stash pop,删除的同时把stash内容也删除了。

相关文章
相关标签/搜索