源代码管理工具 一一 Git-介绍与SVN的对比

一、Git简介和与SVN的简单对比
1. 什么是git?
git是一款开源的分布式版本控制工具
在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行
git的起源
作者是Linux之父:Linus Benedict Torvalds
当初开发git仅仅是为了辅助Linux内核的开发(管理源代码)
git的现状
在国外已经非常普及,国内慢慢普及
越来越多的开源项目已经转移到git

2. 其他的版本控制工具
CVS
最早的开源、免费的集中式版本控制工具
自身设计有问题,会造成提交文件不完整,版本库莫名损坏的情况

SVN
修正了CVS的一些稳定性问题,是目前使用最多的集中式版本库控制器工具

ClearCase
收费的集中式版本控制工具,安装大,运行慢

VSS
微软的集中式版本控制工具,集成在Visual Studio中

1.集中式

 ComputerA想要服务器最新的代码直接通过checkout向服务器下载
    ComputerA在本地修改代码后,直接提交到服务器
    ComputerB想要服务器最新的代码直接通过checkout向服务器下载
    ComputerB在本地修改代码后,直接提交到服务器
    所有的内容统一交给服务器来进行管理
源代码管理工具 一一 Git-介绍与SVN的对比_第1张图片
2.分布式
    
服务器本地有个代码仓库,从服务器更新代码,上传代码
    ComputerA想要服务器最新的代码由本地代码仓库将服务器的代码下载下来,再通过本地代码仓库的项目下载到ComputerA
    ComputerA在本地修改完代码后先提交到本地的代码仓库,再由本地的代码仓库提交到服务器
    ComputerB操作与ComputerA相似
    代码的提交与更新首先会通过本地代码仓库,本地代码仓库再通过服务器,并不是直接交给服务器来进行管理

源代码管理工具 一一 Git-介绍与SVN的对比_第2张图片

3. Git和SVN的简单对比
速度:
在很多情况下,git的速度远远比SVN块
结构:
SVN是集中式管理,git是分布式管理
其他:
SVN使用分支比较笨拙,git可以轻松拥有无限个分支
SVN必须联网才能工作,git支持本地版本控制工作
旧版本的SVN会在每一个目录置放一个.svn, git只会在根目录下拥有一个.git

分布式和集中式的最大区别在于:
    在 分布式下开发者可以本地提交,每个开发者机器上都有一个服务器的数据库

集中式和分布式的工作图:
源代码管理工具 一一 Git-介绍与SVN的对比_第3张图片

分布式:

源代码管理工具 一一 Git-介绍与SVN的对比_第4张图片

git的工作流程

    上图以类区分总共有两类角色,一类共享版本库(可以称之为服务器),一类是开发人员
    开发人员A想要共享版本库的代码,通过clone命令向服务器下载,将服务器完整的代码下载到本地版本库中,之后本地版本库将代码自动下载到本地
    开发人员A在本地修改后,提交代码,通过commit命令先提交到本地版本库,之后通过push命令将本地版本库的代码提交到共享版本库
    开发人员B想要共享版本库的代码,通过clone命令向服务器下载,将服务器完整的代码下载到本地版本库中,之后本地版本库将代码自动下载到本地
    开发人员B在本地修改后,提交代码,通过commit命令先提交到本地版本库,之后通过push命令将本地版本库的代码提交到共享版本库
    开发人员A想要服务器最新的代码,通过pull命令现将服务器最新的代码更新到本地版本库,之后本地版本库将代码自动更新到本地
4. Git的工作原理
如果想了解git的工作原理,有几个核心概念必须知道
工作区(Working Directory):仓库文件夹里除.git目录以外的内容(此时main.m在工作区,是 红色)
源代码管理工具 一一 Git-介绍与SVN的对比_第5张图片

版本库(Repository):.git目录,用于存储记录版本信息
暂缓区(stage) git add main.m 将main.m文件从工作区添加到暂缓区. (文件是 绿色)

git commit -m "modify main.m" 将暂缓区中的main.m 提交到分支(本地版本库)

分支(master):git自动创建的第一个分支. git push origin master 将本地版本库的main.m 推送到服务器(共享版本库)
HEAD指针:用于指向当前分支

git add和git commit的原理
git add :把文件修改或者新添加的文件添加到暂存区
git commit :把暂存区的所有内容提交到本地版本库(分支)
git push : 把本地版本库中的内容添加到服务器(共享版本库)
源代码管理工具 一一 Git-介绍与SVN的对比_第6张图片

源代码管理工具 一一 Git-介绍与SVN的对比_第7张图片

你可能感兴趣的:(Git,SVN)