git(一):git简介

git(一):git简介

 

http://www.bootcss.com/p/git-guide/

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001373962845513aefd77a99f4145f0a2c7a7ca057e7570000

http://backlogtool.com/git-guide/cn/

http://www.01happy.com/centos-6-5-install-gitlab/

http://www.jifang360.com/news/20151230/n036576405.html

http://dockone.io/article/916?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

http://toutiao.com/i6298420366918287874/

http://www.wtoutiao.com/p/h69gEw.html

https://linux.cn/article-5418-2.html

https://www.runoob.com/git/git-tutorial.html

1          简介

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

1.1         功能

从一般开发者的角度来看,git有以下功能:

1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。

2、在自己的机器上根据不同的开发目的,创建分支,修改代码。

3、在单机上自己创建的分支上提交代码。

4、在单机上合并分支。

5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。

6、生成补丁(patch),把补丁发送给主开发者。

7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。

8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

 

从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:

1、查看邮件或者通过其它方式查看一般开发者的提交状态。

2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。

3、向公共服务器提交结果,然后通知所有开发人员。

1.2         SVN与Git的区别

Svn版本控制系统工作流程如下:

1、在中央库上创建或从主干复制一个分支。

2、从中央库check out这个分支代码。

3、增加自己的代码文件,修改现存的代码或者删除代码文件。

4、commit代码,假设有人在分支上提交了代码,你就会被提示代码过期。

你需要先UP代码后在提交。UP代码出现冲突,需要选解决冲突再进行提交。

 

缺点:当无法连接中央版本库的环境下,你无法提交代码,将代码加入版本控制;无法查看代码的历史版本以及版本的变化过程。提交到版本控制系统中的代码,我们都默认通过自测可以运行的,如果某个模块的代码比较复杂,不能短时间实现为可测试的功能,那么你需要等很久的时间才嫩提交自己的代码,由于对代码库集中管理,需要对中央代码库的存储进行备份。分布式的版本控制系统要好一些。

 

git分布式版本控制

git是linus开发的,所以和linux文件系统结合的更紧密些,以至于在windows需要cygwin才能使其完美工作。

git没有了中央版本库的说法,但是为了开发小组的代码小组的代码共享,我们通常还是会搭建一个远程的git仓库。

和svn不同的是,开发者本地包含一个完整的git仓库,从某种程度上说本地的仓库和远程的仓库在身份上是等价的,没有主从之分。

如果你的项目是闭源项目,或者你习惯于以往的集中式管理模式的话,那么在git下你也能像svn一样工作,那么流程上增加一些步骤。

1、本地创建一个git库,并将其add到远程的git库中。

2、在本地添加或者删除文件,然后commit,当然commit操作都是提交到本地的git库中。(其实是提交到git目录的objects目录里)。

3、将本地git库的分支push到远程的git库分支上,如果远程的git库已经有别人push过了,那么远程的git库不允许你push,你需要先pull,然后如果有冲突,处理好冲突,commit到本地的git库后,再push到远程git库。

1.3         优缺点

优点:

适合分布式开发,强调个体。

公共服务器压力和数据量都不会太大。

速度快、灵活。

任意两个开发者之间可以很容易的解决冲突。

离线工作。

 

缺点:

资料少(起码中文资料很少)。

学习周期相对而言比较长。

不符合常规思维。

代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

 

posted on 2019-06-18 16:04  光阴8023  阅读(394)  评论(0编辑  收藏  举报