Git 多人协做开发的过程

Git能够完成两件事情:html

1. 版本控制git

2.多人协做开发程序员

现在的项目,规模愈来愈大,功能愈来愈多,须要有一个团队进行开发。windows

若是有多个开发人员共同开发一个项目,如何进行协做的呢。服务器

Git提供了一个很是好的解决方案 ---- 多人协做开发。spa

1.多人协做原理

典型的作法是,首先建立一个git服务器,被多我的所操做。3d

 

1.多人协助实现

分为以下几个步骤:版本控制

1.建立一个git裸服务器 (git init --bare)指针

2.从裸服务器将版本库克隆至本地(git clone )server

3.本地常规操做

4.推送版本至服务器 (git remote +  git push origin master)

5.从远程服务器拉取版本(git pull)

通常而言,咱们须要在Linux服务器上来搭建咱们的git版本服务器,每一个公司都会有。

由项目负责人开始。

咱们如今是windows系统上模拟这个操做过程。

(1).建立一个git裸服务器 (git init --bare)

由负责人来完成的。服务器新建一个项目目录,如git-server

 

建立完毕,咱们发现git-server内容和上次的不太同样。

上次使用git init 建立以后,会有一个隐藏的.git目录。目录中的才是如今看到的内容。

也就是说,如今根本就没有.git目录了。

这就意味着在这个目录中,不能作常规的开发。

(2).从裸服务器将版本库克隆至本地(git clone )

在git版本服务器,通常是不作任何开发工做的。若是要开发项目,就须要将版本库从服务器克隆到本地。

假设有一个程序员甲,开始本身的工做了。

使用命令 git clone git版本服务器地址

在windows下面,就是使用绝对路径,以下:

 

而后,甲就能够在这个目录下,进行常规开发。

咱们能够在这个目录下,建立本身的工做区目录,完成常规开发。

(3).本地常规操做

甲能够,在本地进行常规开发。

这个过程,能够反复进行。

个人第一个模块(功能)开发完毕。须要将其推送到服务器。

(4).推送版本至服务器 (git remote +  git push origin master)

当在本地完成一个模块(功能),须要推送到服务器,供其余同事使用。

第一件事情,须要知道服务器在哪儿?

git remote

第二件事情,直接推送便可

git push origin master

其中origin就是使用git remote获得的远程服务器的名称。

master表示是主分支。

 

对于甲来讲,它的工做已经告一段落了,该轮到乙程序员出场了。

乙程序员,首先将版本库从git服务器上克隆到本地。

 

打开这个目录,而后进能够看到最新新的内容,以下:

对于乙而言,能够在本地进行常规开发。与此同时,甲继续他的常规开发。

模拟乙程序员在本地的开发。

将完成的工做,推送到git服务器。

回头,再看看甲的开发。

甲收工,准备下班了。在下班以前,须要将最新版本推送到git服务器。

开始使用命令,执行以下:

结果出错了,why?

之因此会出错,缘由在于:其余程序员已经将最新的一个版本提交到git服务器上,可是你在提交以前,已经不是最新的。

在这种状况下,甲,须要先从服务器拉取最新的版本。

(5).从远程服务器拉取版本(git pull)

在多人协助开发时,每一个开发人员在推送本身的最新版本时,都须要确保当前版本是最新的,因此就须要先获取最新版本,也就是说须要从服务器拉取最新版本到本地。

须要使用 git pull命令

 

如此一来,甲当前就是最新的版本。

而后再次使用 git push 命令推送至服务器。

 

接下来须要分两种状况:

若是有新的开发人员加入进来,重复2~5过程。

若是不是新的开发人员,重复3~5过程。

好比,对于乙而言,其实它如今已经不是最新的版本了,因此须要使用 git pull 拉取最新版本。

 

因此,对不少开发人员而言,一打开电脑,立刻先git pull,拉取最新的。而后进行常规开发,

开发完毕以后,在git push以前,还须要使用git pull再拉取一遍。

若是还有一个新的程序员丙,加入了,怎么办呢?

须要先git clone

而后就进行常规开发,推送版本、拉取版本。

在整个协做开发时,有时候会出现冲突。一般都是因为开发人员分工不明确致使的,因此若是出现这种状况,须要两个程序员协商解决。

3.分支

(1).什么是分支

在前面全部的操做当中,咱们一直使用的是master主分支。以刚才的项目版本控制为例

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

图示以下:

若是咱们的项目自己比较简单,只须要有主分支master就够了。

可是,实际上并非这样的。

在这个世界上,有一种软件叫作开源软件 -- 源代码开发,全部的人均可以避免费使用。

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

每一个程序员均可以建立一个本身的分支,这个本身分支和主master彻底独立的两个分支。

相应的,每一个程序员均可以拥有本身的分支,能够进行任何的开发,此时和master没有什么关系的。

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

何时会用到分支呢?

假设你准备开发一个新功能,可是须要两周才能完成,第一周你写了50%的代码,若是马上提交,因为代码还没写完,不完整的代码库会致使别人不能干活了。若是等代码所有写完再一次提交,又存在丢失天天进度的巨大风险,怎么办?

你能够建立一个属于本身的分支,别人看不见,还继续在原来的分支上工做,而你在本身的分支上进行开发,等开发完毕,合并便可。

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

(2).分支的基本操做

基本操做有以下几个:

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://www.cnblogs.com/Josiah-Lin/p/6847973.html

相关文章
相关标签/搜索