一.git简介
一款开源的分布式版本控制工具而svn是集中式版本控制器
二.集中式与分布式版本控制器的区别
1.集中式
ComputerA想要服务器最新的代码直接通过checkout向服务器下载
ComputerA在本地修改代码后,直接提交到服务器
ComputerB想要服务器最新的代码直接通过checkout向服务器下载
ComputerB在本地修改代码后,直接提交到服务器
所有的内容统一交给服务器来进行管理
2.分布式
服务器本地有个代码仓库,从服务器更新代码,上传代码
ComputerA想要服务器最新的代码由本地代码仓库将服务器的代码下载下来,再通过本地代码仓库的项目下载到ComputerA
ComputerA在本地修改完代码后先提交到本地的代码仓库,再由本地的代码仓库提交到服务器
ComputerB操作与ComputerA相似
代码的提交与更新首先会通过本地代码仓库,本地代码仓库再通过服务器,并不是直接交给服务器来进行管理
三.集中式与分布式的简单对比
1.速度
在很多情况下,git的速度远远比SVN快,git提交可以先提交到本地,网络畅通的时候再统一提交到服务器,而SVN的改动必须提交到服务器
2.结构
SVN是集中式管理,git是分布式管理(重要)
3.其他
SVN使用分支比较笨拙,需要先从tags中将代码拷贝过来,修改后备份到分支,分支再与主干的项目合并
git可以轻松拥有无限个分支,轻松的在各个分支随意切换
SVN必须联网才能正常工作,git支持本地版本控制工作(git可以先提交到本地版本库)
旧版本的SVN会在每一个目录置放一个.svn(目前svn1.7的只有一个.svn),git只会在根目录拥有一个.git
四.git的工作流程
开发人员A想要共享版本库的代码,通过clone命令向服务器下载,将服务器完整的代码下载到本地版本库中,之后本地版本库将代码自动下载到本地
开发人员A在本地修改后,提交代码,通过commit命令先提交到本地版本库,之后通过push命令将本地版本库的代码提交到共享版本库
开发人员B想要共享版本库的代码,通过clone命令向服务器下载,将服务器完整的代码下载到本地版本库中,之后本地版本库将代码自动下载到本地
开发人员B在本地修改后,提交代码,通过commit命令先提交到本地版本库,之后通过push命令将本地版本库的代码提交到共享版本库
开发人员A想要服务器最新的代码,通过pull命令现将服务器最新的代码更新到本地版本库,之后本地版本库将代码自动更新到本地