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

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

    六、创建与合并分支。

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

    创建新的分支dev,并且切换到dev分支上,命令:

    git checkout -b dev    创建新的分支,并且切换到该分支上,这相当于两条命令:

    git branch dev    创建分支dev

    git checkout dev    切换到分支dev

    git branch    查看分支,会列出所有分支,并且会在当前的分支上添加一个星号。

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

    可以发现在master分支上是看不到dev分支新修改的内容的,这时候我们需要把dev分支上的内容合并到master上,切换到master分支,使用命令:

    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上来。

    七、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内容也删除了。



你可能感兴趣的:(git)