总有人间一两风,填我十万八千梦

Git协同开发示例|过程(2) –分支

软件技巧 Zero、J 798℃ 0评论

3.分支
(1).什么是分支

在前面所有的操作当中,我们一直使用的是master主分支。以刚才的项目版本控制为例

有四个版本,在我们的版本库中,都是存在于master主分支上的。

图示如下:

如果我们的项目本身比较简单,只需要有主分支master就够了。

但是,实际上并不是这样的。

在这个世界上,有一种软件叫做开源软件 — 源代码开发,所有的人都可以免费使用。

开源软件是由世界上无数的程序员共同来开发。

每个程序员都可以创建一个自己的分支,这个自己分支和主master完全独立的两个分支。

相应的,每个程序员都可以拥有自己的分支,可以进行任何的开发,此时和master没有什么关系的。

一旦开发完毕,就可以将你的分支合并到主分支上去。

什么时候会用到分支呢?

假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险,怎么办?

你可以创建一个属于自己的分支,别人看不见,还继续在原来的分支上工作,而你在自己的分支上进行开发,等开发完毕,合并即可。

在开源世界中,需用大量的程序员共同维护一个项目。也是需要使用分支,如Jquery。

(2).分支的基本操作

基本操作有如下几个:

  1. 1查看当前分支 (git branch)
  2.  创建分支 (git branch 分支名)
  3. 切换分支(git checkout 分支名)
  4. 分支上的常规操作
  5. 分支的合并 (git checkout master + git merge 分支名)
  6. 分支的删除(git branch -d 分支名)

查看当前分支 (git branch)

其中的 * 表示 当前分支。

默认情况下,只有一个master主分支。

创建分支 (git branch 分支名)

切换分支(git checkout 分支名)

创建完成之后,就有了一个新的分支,但是并没有立即切换到新的分支,需要使用命令切换一下。

分支上的常规操作

已经切换到b1分支上,就可以在b1分支进行常规开发和操作。

使用git add 和git commit提交。

使用git log查看即可:

与之对应的,我们再次切换到master分支上看看是什么情况:

说明在master分支上,并没有新提交的内容。

分支的合并 (git checkout master + git merge 分支名)

分支的合并,一定是在 主分支上进行的。

只能在主分支合并其它分支。

需要两步:

1) 切换到主分支

2) 使用git merge 分支名 进行合并

再次查看master的一个log情况,如下:

分支的删除(git branch -d 分支名)

使用命令git branch -d 分支名

如果你发现你的分支中所做的开发没有任何用处,也可以不合并直接删除。

(3).分支的原理
分支的过程及原理如下:

默认只有master的情况下,master总是指向最新的版本,而HEAD指针总是指向master的。

现在,我创建了一个新的分支dev,将当前分支指定为dev,此时,master和dev都指向当前最新版本,但是HEAD指针已经指向了dev分支。

 

接下来,我们提交了新的版本,dev指向最新版本,而master则原地不动。

HEAD指向当前分支dev的。

当在dev分支上完成开发之后,可以将它合并到主分支master上。

合并时,需要先切换到master,意味着HEAD指向了master,合并的时候其实就是将master和dev的最新版本同步。

dev分支的使命已经完成,没有什么作用了,将其删除掉。只剩下一个主分支。

本文转载自:http://t.cn/RrZT9B5

转载请注明:悠然品鉴 » Git协同开发示例|过程(2) –分支

喜欢 (0)or分享 (0)
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址