团队协作开发之git版本控制

一、关于git

1.1git是什么?
引用下百科的解说:
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从小到非常大的项目版本管理。Git是Linux Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
简单点说,就是一个版本控制工具,帮助大家管理自己的代码。
1.2git和github有什么区别?

  • git(工具)是一个版本控制工具
  • GitHub(社区)是一个用git做版本控制的项目托管平台,并附带交友分享功能。

1.3git与svn有什么区别?

SVN

svn可以理解为一个版本控制,加上svn服务器备份工具。如下图所示:
团队协作开发之git版本控制_第1张图片
每一个SVN用户都可以从服务器checkout代码,同样也可以像服务器(commit)代码,可以更新(update)到别人提交的代码。

  • 优势:所有的操作都需要基于svn中心服务器,所以操作起来必然很简单。
  • 正是因为所有的操作都要基于svn中心服务器,所以只要svn中心服务器出现冲突(conflict),错误(error)都会给整个团队之中的成员带来灾难。

Git
正是因为SVN的劣势所在,git就应运而生,去掉了所有的操作都依赖于版本控制中心服务器的设计。使用的高大上的分布式管理。如下图所示:
团队协作开发之git版本控制_第2张图片
每个结点都可以充当控制中心的作用,所以从GIT服务器复制(clone)一份到本地,同样也可以单独对自己本地git版本进行单独管理。在针对单个git版本库的操作(commit)、(pull)就如同svn的commit与update操作。当然版本库之间的操作就是拉取(pull),推送(push)。

1.4理解分支(master)是什么?

以一个App为例子,我们开发一款移动App的过程中,我们必然会对已经上线的版本做一个备份(master分支),使用另一个copy过来的项目进行开发(dev分支)。
团队协作开发之git版本控制_第3张图片
即,这样公司的程序员小A就可以在dev分支上开发了,就算开发的时候小A脑残,不小心把逻辑弄错了,无法正常运行的时候。我们还有稳定的版本的Master分支,可以使用。
团队协作开发之git版本控制_第4张图片
因为存在一个本地仓库,我们就可以在一个功能没有完全开发完毕的时候提交commit到本地仓库,测试好没有问题之后再push到远程git服务器,避免了,没有开发完成的项目产生任何差池无法处理。

1.5如何进行团队协作?

如果只有一个开发者开发,那么上述的操作并没什么大碍。对于实际的开发工作中我们往往是多个开发者共同来开发一个项目。多人修改一个文件必然会出现冲突(conflict);不同人的思想开发一个逻辑难免会出现漏洞与错误;如何进行code review、代码质量把控、冲突降低才是git的优势。
团队协作开发之git版本控制_第5张图片
同理,A、B、C三位员工还是可以在自己的个人分支上进行开发,所有的提交都不会影响到其他人。
团队协作开发之git版本控制_第6张图片
尽可能的降低耦合性就是git版本控制工具的核心思想。每个人都可以在自己的分支上畏缩无为的操作,直到自己的分配的功能开发完毕,这个时候就需要,将自己新增的功能回归到dev分支上,与其他的所有开发的功能进行合并。这个时候就可以发起合并请求(merge request)
团队协作开发之git版本控制_第7张图片

1.6线上紧急bug处理,快速发版

一个迭代开始的时候,我们往往相对于上一个迭代修改了很多代码,这个时候,由于开发时间与上线的速度问题,我们很难对一个线上版本存在的bug进行快速修复。当然,如果出现p0级的bug,我们不得不进行快速修复上线的时候,我们之前设计的分支模型就比较有用了。
如下图所示:
团队协作开发之git版本控制_第8张图片
因为master分支与线上的地代码保持一致,我么希望临时性处理一些问题,我们就从master分支临时性的拉出一个fix bug分支。将正在开发的分支切换到fix bug分支,快速修复bug上线。然后再切换到自己的dev分支进行迭代开发,做到的环境的快速切换。

二、git本地代码至码云(因为我是用码云就以此为例)

1.在上传代码目录文件夹中点击鼠标右键,点击Git Bash Here。可以看到如图所示:
团队协作开发之git版本控制_第9张图片
2.如果是本机安装成功第一次使用,先配置一下一些基本信息

$ git config --global user.name "zhouhuawen"
$ git config --global user.email "[email protected]"

3.初始化一个git本地仓库,此时会在本地创建一个.git的文件夹

$ git init

4.将你本地仓库与码云上的远程仓库关联起来(添加远程仓库)

$ git remote add origin "https://gitee.com/你的码云用户名/XXXX"

5.将码云上的仓库pull到本地文件夹

$ git pull origin master

6.git add + 文件名或者git add .(.表示所有的)

$ git add .

7.添加文件描述

$ git commit -m "新添加的文件内容描述"

8.将本地仓库推送到远程仓库

$ git push origin master

至此代码提交完成,如果在同步过程中遇到异常,请看如下:

同步冲突
(1)如果您舍弃线上的文件,则可以在推送时选择强制推送,强制推送需要执行下面的命令

$ git push origin master -f

(2)如果您选择保留线上的readme文件,则需要先执行

$ git pull origin master

然后才可以推送,如果发生冲突,则需要先解决冲突。

参考:
git是什么?如何使用git进行团队协作?
使用Git上传项目到码云
如何将本地项目上传到码云

你可能感兴趣的:(git,Android)