《Git学习记录》—— git和svn的区别
公司团队近期从使用老掉牙的svn换成了git。之前只听说过git,但还没使用过。所以边学边用的时候记录一些学习的过程。
先从git的基本概念以及跟svn的区别开始学习。通过svn的使用经历,对svn的原理已经有了比较清晰的认知。那么换成git之后,第一步是要厘清他们之间的区别和互通的点,以及git的一些基本概念。
首先,svn是一个集中式版本控制系统。也就是说有某台服务器被设定为中央服务器,所有文件的当前版本和历史版本都是在这个服务器上集中管理的。而开发者是从这个服务器中checkout出属于他自己的工作区到他自己的电脑,在本地改动了文件之后,需要提交到中央服务器。而其他开发者需要开发同一份文件时,需要从中央服务器更新最新的文件下来。如下图所示:
而Git是分布式版本控制系统,我们每一个开发者的本地都有一个版本库,每次修改完之后的新版本提交,都是先提交到本地版本库,然后再通过push或pull命令,将提交同步到remote远程版本库(其他人的版本库 or 中央版本库)。跟svn的区别就是,svn是一个服务器集中管理文件版本,而Git则是每个人都有一个版本服务器。如下图所示:
svn使用起来非常简单,常用的命令就那么几个,概念理解起来也简单。而Git的概念,刚接触的时候理解起来会有点复杂,相对的常用的命令也比svn要多,还多了很多别的概念,例如分支等。
那么为什么还要换git呢,相对于svn,git有如下优点:
1、git比svn新得多,也热门得多:当然技术不是越新越好,可是新的技术,能增进程序员的技术品味。而且不会跟当前技术栈脱轨,增加竞争力。
2、高效的工作方式:分支的概念,让开发者可以进行并行开发。可以在不同的分支和任务之间快速切换。
3、离线功能:开发者本地有本地版本库,可以在离线的情况下敲代码、提交、创建分支以及其他git命令等等。之后再同步到中央服务器。
4、高性能:相较于svn,git有更加高利用率的储存版本历史方式。而且几乎所有的操作都可以在本地执行,不需要网络访问。
而git也并非十全十美,他会有如下的缺点:
1、高复杂度,学习成本高:git的概念相对于svn是要高出许多的。类似svn等集中式版本控制,相当于只需要理解复制粘贴的概念即可。而git是分布式工具,具有一定的复杂性。
2、大型二进制文件的资源储存成本:因为每个开发者本地都会有版本库,会保存到项目的所有历史版本。不像svn等,只会有最新版本的文件。 git对于普通的小文件,是有非常高效的打包压缩储存方式,可是如果项目中有很多大文件(例如电影、相片等),则会令版本库变得非常巨大。
3、版本库只能作为一个整体被处理:在git中的每一次提交,都是提交整个项目或者目录的。因此我们项目在svn中,可能会只是一个svn仓库,而我们需要哪部分可以单独检出。而换成git之后,则会按模块分别建git仓库。无形中也增加了开发的复杂度
git的一些概念:
1、版本库:版本库的本质是一个高效的数据储存结构,每一次提交,git都会将文件(blob)、目录(tree)、版本(commit)作为一个提交对象保存下来。会给这次提交生成一个散列值(版本号)。
2、分支:git允许我们从某一个版本创建一个分支,然后在该分支上进行开发,然后再合并到其他分支中,例如主分支。
3、推送:git的提交只是提交到我们本地的版本库,我们还需要将提交通过push推送给中央版本库才行。
《Git学习记录》—— git和svn的区别相关推荐
- 超详细的Git学习记录(Git基础内容/IDEA集成Git/GitHub/Gitee/GitLab及Centos7部署GitLab)
超详细的Git学习笔记 从B站搜到的尚硅谷视频学习了Git,记录了一下学习的内容,收获很大 学习地址: https://www.bilibili.com/video/BV1vy4y1s7k6?p=11 ...
- Git学习(3)GitHub和SVN的区别
GitHub和SVN的区别 之前用的版本控制系统是SVN,但是最近因为流行使用GitHub,这篇文章认识一下Git和SVN的区别. 1)Git是分布式的,SVN不是: 这 是git和其它非分布式的版 ...
- (一)Git学习记录(不断更新)
作为程序员如果你还不知道 Git 和 GitHub,说不过去吧,赶紧来学习一波. 一.认识GitHub Git 是个版本控制系统,说明白点就是进行代码的各种管理,比如你写错代码进行回滚啊.追寻 Bug ...
- Git学习记录 力做全网最强入门教程
目录 Git学习记录 力做全网最强入门教程 什么是GitHub? 什么是Git? Git的配置 Git的安装(只介绍windos操作系统下) Git的配置 至此我们的入门教程到此结束,更新中级教程要等 ...
- Git学习记录(一)
git-book 全面资料 git 用树形查看 (git 命令代替gitk查看节点树 part two 日常使用只要记住下图6个命令即可,但是学海无涯啊 常用 Git 命令清单.几个专用名词的译名 ...
- git学习——四git版本管理
一.git版本管理的优势 都说git比svn强大,强大在哪呢? 首先,从部署上说:svn.cvs都是集中式的,一台服务器上部署服务,所有客户端编写的代码都要提交到该服务器上.git是分布式的,所有人都 ...
- Git学习笔记—Git Flow
在Java程序开发中的定制开发规范,想要把项目正规高效的跑起来.引入 Git 版本控制,Git-Flow 便成为了首选. 今天动力节点Java学院来带你了解一下. 一.为什么使用 git-flow 当 ...
- 【git学习】git管理本地项目
(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 最近打算使用git管理本地的项目,网上的资料很多,但是很杂,这这整理一下. 2.git使用 (1)初始 ...
- 【Git学习】git常用命令
1) 查看日志 我们常用 -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新: 还有许多摘要选项可以用,比如 –stat,仅显示简要的增改行数统计 -p 按补丁格式显示每个更新之间 ...
最新文章
- 【Python 爬虫】 4、爬虫基本原理
- 一切都是对象---JAVA编程思想
- android 6.0 api 管理,Android 6.0(API23)权限申请问题
- ado filter 多条记录_注意!武汉江南中心绿道武九线综合管廊工程开工,青山区多条道路通行规则有变...
- Spring boot中使用log4j记录日志
- 利用QSharedMemory 保证单个程序运行
- Hyperledger Fabric 实战(七):链码 shim API 详解
- iertutil.dll文件缺失/ 修复方法
- 超星尔雅移动图书馆账号密码
- 深度学习论文: Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection及其PyTorch实现
- ifft2 二维快速傅里叶逆变换(Matlab)
- Linux操作手机端
- 洛谷 P2708 硬币翻转 题解
- 波卡(Polkadot)创始人Gavin Wood眼中加密世界
- Screaming Frog Log File Analyser 中文版安装教程
- 网络安全之几种常见的黑客攻击手段
- win7 快捷键冲突
- 极光开发者周刊【No.0423】
- mysql 数据库中 ,按照字母加数字的字符串排序
- 从零开始做单相逆变电源(硬件)