1、git介绍
1.1、git使用背景
大家在开发项目的过程中,如果直接在本地系统上维护源码目录,经常会碰见下面的问题:
- 不小心把源代码的目录或文件删了,写了好久的代码没了!
- 按需求添加新功能,写了好多代码,但净是编译错误,改都改不完,想回到之前的版本,开始大面积删除或者屏蔽代码,很崩溃,如果此时有个代码版本管理工具,该多好!
- 新功能添加完了,编译运行一切很顺利,功能也正常,但有时候运行会出现以前没见过的运行错误,非必现的,想查看和之前代码的差异,看看都在哪些源文件中修改了代码, 该怎么办?
- 团队开发项目,但是项目成员都不在一起,各自写的代码该如何添加到一块,还能避免错误,不会出现谁把谁的代码给覆盖了?
1.2、git和svn介绍
git是目前世界上最先进的分布式版本控制系统(对比集中式版本控制系统SVN),没有之一!
git(大部分使用),github,svn(公司用)
1.3、SVN集中式
在早期,电脑资源稀缺,网络资源少,假设在公司上班,公司有一台电脑,视作服务器,公司把所有人的代码存一份在这个服务器上,称作项目代码。
假如说公司是3个人一起开发,A,B,C三个人一起完成。有的人会在这个服务器上创建工程,创建用户,这3个用户ABC都可以登录到这个服务器上提交代码。
在公司里,不需要上网,局域网就可以部署,我们自己把代码写好之后,就可以上传到服务器里面。
比如这个服务器上的项目代码有个fun函数,A去改了这个函数的几行代码,B也去这个函数定义了一些语句,可能存在多个用户同时修改了同一个文件的 同一个函数。
也许他们写的代码交叉一块了。这时候就可以通过svn。A的代码放上去,B的代码放上去,合起来。但是可能产生冲突了,逻辑顺序需要人工去操纵。
如果是A是增加一个add函数,B是增加一个max函数,互不影响,所以提交对服务器的逻辑顺序不影响,这时候不需要人工参与了。
我们要多提交代码,多下载代码!!!
问题:
- 我们的代码版本本地都是最新的,天天在增加代码,对于A,B,C,代码量都在本地增加,每次都要从服务器拉取代码都需要网络,加上新增加的。
- 如果服务器坏掉了,就麻烦了。我们提交上去后,只有最新的代码版本,没有历史的版本了。但是有时的开发,我们需要去看历史的版本。
集中式的管理,对服务器依赖高。
1.4、初步认识git
git是分布式的!!!
-
我们也需要服务器,服务器上也有项目代码。
-
但是A,B,C三个人一起开发,项目代码不仅在服务器上存放,而且会在每个人的主机上都存放一份项目代码(拷贝)。
-
每次我们每个人都会把代码直接提交到自己的本地,然后本地的仓库的代码和服务器仓库上的代码一交互。
-
然后我们每个人在自己的本地上就会存储各个历史版本的代码。
-
A,B,C,在写代码之前,都会从服务器拉取最新的代码,写完之后,在本地留存,然后和服务器的代码交互。
如果服务器挂掉了,我们把A,B,C中的最新代码送上去。
git原本是linux创始人写的工具。现在git被微软买过来了。
git:分布式版本控制系统!
github:远程代码托管仓库!