NullPointer 发表于 2016-12-20 11:23

Git教程(九)

1、分支管理
1.1、什么是分支?
假设你正开发一个功能,需要2周完成,你第一周写了50%代码,因为还没开发完,所以你不能提交。等到下周开发完一起提交,又怕太乱,代码太多,这时候就需要用到分支了。你建一个自己的分支,别人看不到。还继续在原来的分支上正常工作,而你在自己的分支上干活,向提交就提交,直到开发完后,再一次性合并到主分支上,这样既安全又不影响别人工作。其他版本库也有分支,但是速度上慢的要死,所以都被忽略了,而git速度几乎在1s左右,很快!!!
2、创建与合并分支
2.1、每次提交,Git都把他们串成一条时间线,这条时间线是一个分支,在前八节的demo中,只有一条时间线,在Git里叫这个分支为主分支(master分支)。HEAD严格来说不是指向提交,而是指向master分支,master才是指向提交的,所以HEAD就是指向当前分支。一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master。

2.2、视频演示分支的过程
http://oi5l9slpi.bkt.clouddn.com/Git-09-1.wmv
2.3、当我们创建新的分支(例如dev分支)时,Git创建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:

从上图可看出,Git创建个分支很快,因为除了增加一个dev指针,修改下HEAD指向,工作区的文件都没有任何变化。
从现在开始我们提交文件就是在dev分支上进行操作了,比如提交一次后,dev指针往前一步,master指针不变。

假如我们工作完成了,要把dev分支上的内容合并master分支上,最直接的方法是把master指向dev的当前提交,如下图

所以Git合并也特别快,就改改指针,工作区不变!!!
合并完分支后,可以删除dev分支,只剩下master,如图

完整视频演示地址:
http://oi5l9slpi.bkt.clouddn.com/Git-09-2.wmv
3、实战演示
3.1、创建dev分支并切换到dev分支,执行git checkout -b dev命令

git checkout命令加上-b表示创建并切换,相当于以下两条命令
git branch dev
git checkout dev
3.2、用git branch 命令查看当前分支

git branch会列出所有分支,当前分支前面会有个*号!
3.3、在以前的hello.txt上新增一行“git is good”
3.4、提交,先git add 再 git commit

3.5、现在git分支完成,我们切换回master分支

3.6、切换到master之后,再看hello.txt文件,发现刚才修改并提交的内容不见了,是因为刚才修改是在dev分支上进行的,现在是master分支,所以我们需要合并分支。
3.7、合并分支,将dev分支内容合并到master。执行命令git merge dev

git merge命令用于合并指定分支到当前分支。
注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是把master指向dev的当前提交,所以合并速度很快,无需动工作区内容。
3.8、再去看hello.txt文件,发现之前在dev分支对hello做的修改现在合并到master分支上了。
3.9、删除已经无用的dev分支,执行命令:git branch -d dev

3.10、查看git分支,git branch,发现只有master了。

小结:
(1)查看分支:git branch
(2)创建分支:git branch <name>
(3)切换分支:git checkout <name>
(4)创建+切换分支:git checkout -b <name>
(5)合并某分支到当前分支:git merge <name>
(6)删除分支:git branch -d <name>
完整视频:
http://oi5l9slpi.bkt.clouddn.com/Git-09-3.wmv

lengkeyu 发表于 2016-12-20 12:26

这么好的帖子,呵呵

水雨争枫 发表于 2016-12-20 18:54

这么好的帖子,我一点都没有看懂{:301_1005:}

NullPointer 发表于 2016-12-20 18:56

水雨争枫 发表于 2016-12-20 18:54
这么好的帖子,我一点都没有看懂

请从第一讲开始看起

小小欣 发表于 2016-12-21 04:58

http://www.52pojie.cn/thread-564440-1-1.html楼主你这个帖子里的第一个视频教程文件已损坏

NullPointer 发表于 2016-12-21 08:07

小小欣 发表于 2016-12-21 04:58
http://www.52pojie.cn/thread-564440-1-1.html楼主你这个帖子里的第一个视频教程文件已损坏

多谢提醒和关注,到公司后我更新一下!

101MHz 发表于 2017-5-17 09:21

好贴好贴,绝对好贴。。。

天使3号 发表于 2018-7-10 16:04

讲的真好,感谢。学到了
页: [1]
查看完整版本: Git教程(九)