这一章比较重要,讲述了Git比svn强大的地方,直接转载廖雪峰老师的文字,更好的理解 什么是分支 和 为何分支git比svn作的更好java
分支在实际中有什么用呢?假设你准备开发一个新功能,可是须要两周才能完成,第一周你写了50%的代码,若是马上提交,因为代码还没写完,不完整的代码库会致使别人不能干活了。若是等代码所有写完再一次提交,又存在丢失天天进度的巨大风险。
如今有了分支,就不用怕了。你建立了一个属于你本身的分支,别人看不到,还继续在原来的分支上正常工做,而你在本身的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工做。
其余版本控制系统如SVN等都有分支管理,可是用过以后你会发现,这些版本控制系统建立和切换分支比蜗牛还慢,简直让人没法忍受,结果分支功能成了摆设,你们都不去用。
但Git的分支是不同凡响的,不管建立、切换和删除分支,Git在1秒钟以内就能完成!不管你的版本库是1个文件仍是1万个文件。
git
咱们看看怎么在eclipse中建立分支并实际应用。安全
在之前的版本中,咱们知道git对每一个项目都有一个默认的时间线,就是master分支,每次提交,Git都把它们串成一条时间线,而后有一个head指针,Git用master指向最新的提交,再用HEAD指向master,就能肯定当前分支,以及当前分支的提交点。eclipse
首先,咱们建立dev分支,而后切换到dev分支:svn
在git repositories中,点击该项目的 branches,-》右键switch to -》new branch,而且head已经默认指向了“dev”分支,之后你的每次提交都是在‘dev’上操做,已经跟‘master’分支无关了。 spa
如今history框是这样的: .net
咱们在demo.Java文件中 添加一个方法 dev(),而后commit(提交),
head指针已经不指向master分支,而是跟着‘dev’分支如影随行。 版本控制
当咱们切换回‘master’分支最新的提交点(在master分支上点checkout),dev()方法不见了: 指针
那咱们假如dev分支上的活干完了,该怎么合并到master分支上呢?图片
1.在git repository界面 先切换回‘master’分支(右键master-》checkout)
2.而后右键master-》merge..,注意fast forward options选第二项,能够在History框看到分支合并的详细信息,能看出来曾经作过合并
3.在Local文件夹中选择你须要合并到’master’分支中的分支,在这里固然是选择’dev’分支。而后点merge就行。
从上面的history框就能够看到如今head从新指向了‘master’分支,而‘dev’分支的内容已经被合并。