git分支

原文地址http://www.cnblogs.com/BeginMan/p/3543240.htmlhtml

分支的理念就是分身,就像孙悟空拔出猴毛变出不少跟本身如出一辙的猴子,而后每一个猴子作本身的事情互不干涉,等到全部猴子作完以后,猴子集合来合并劳动成果,而后悟空就把那些猴子猴孙门通通收回了。git

你建立了一个属于你本身的分支,别人看不到,还继续在原来的分支上正常工做,而你在本身的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工做。安全

Git鼓励大量使用分支:服务器

一、建立与合并分支

命令以下:学习

查看分支:git branch

建立分支:git branch name

切换分支:git checkout name

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

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

删除分支:git branch -d name

推荐阅读廖雪峰的Git教程fetch

二、处理冲突

产生冲突的方式不少,常见的一种是建立一个分支并修改提交,而后回到主分支在修改提交同一个文件,而后“快速合并分支”就发生冲突了:网站

$ git merge feature1 Auto-merging readme.txt CONFLICT (content): Merge conflict in readme.txt Automatic merge failed; fix conflicts and then commit the result..net

打开我修改的文件,能够发现显示以下:3d

<<<<<<< HEAD     
在master上作出修改
=======
解决冲突
>>>>>>feature1

<<<<<<< HEAD 表示主分支,主分支的修改是:“在master上作出修改”;>>>>>>feature1表示我建立的feature1分支。code

解决办法就是手动处理冲突,这点跟SVN同样。处理以后在提交,而后删除分支便可。

3.分支策略

经过廖雪峰的官方网站的git学习,让我清楚了明白git分支的策略:

在实际开发中,咱们应该按照几个基本原则进行分支管理:

首先,master分支应该是很是稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,好比1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每一个人都在dev分支上干活,每一个人都有本身的分支,时不时地往dev分支上合并就能够了。

因此,团队合做的分支看起来就像这样:

关于no-ff:

上面咱们使用的合并分支是fast forward,这种快速合并的模式,可是有个地方很差的就是不能显示历史信息,在之后开发中我不知道有哪些分支曾经合并过,因此最好使用 no-ff:no fast forward的合并方式,这种方式在合并的同时会生成一个新的commit,这样,从分支历史上就能够看出分支信息。

$ git merge --no-ff -m "merge with no-ff" dev

四、储蓄

在上一篇博客[git初体验(二)基础git文件操做]也总结了git的储蓄,所谓的储蓄就是针对如下的状况:

当你正在开发一个功能时,忽然boss让你尽快修改一个bug,此时最紧急的是fix bug. 而正开发的功能还没有完善还不能提交,这个时候就会想到能不能将手头的工做隔离开,去单单解决bug,而后提交bug,而后在进行手头工做。

上面的案例就是git储蓄的出现:

git stash  #把当前工做现场“储藏”起来

五、feature

开发一个新feature,最好新建一个分支;

若是要丢弃一个没有被合并过的分支,将丢失掉修改,能够经过git branch -D name强行删除。

六、git本地分支与远程分支

参考:git建立与管理远程分支

1.远程分支就是本地分支push到服务器上的时候产生的。好比master就是一个最典型的远程分支(默认)

git push origin master

2.随便建立分支,而后push到服务器就生成了远程分支

git checkout -b dev  # 建立本地dev分支用于开发
git checkout -b bug  # 建立本地bug分支用于bug处理
git checkout -b feature # 建立本地feature分支用于新功能开发

git push origin dev  # 生成远程dev分支
git push origin bug  
git push origin feature

3.远程分支与本地分支区分。在服务器上拉取特定分支时要指定本地分支名称:

git checkout --track origin/dev
#注意该命令因为带有--track参数,因此要求git1.6.4以上!
这样git会自动切换到develop分支。

4.同步本地远程分支

git fetch origin
相关文章
相关标签/搜索