公司团队近期从使用老掉牙的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的区别相关推荐

  1. 超详细的Git学习记录(Git基础内容/IDEA集成Git/GitHub/Gitee/GitLab及Centos7部署GitLab)

    超详细的Git学习笔记 从B站搜到的尚硅谷视频学习了Git,记录了一下学习的内容,收获很大 学习地址: https://www.bilibili.com/video/BV1vy4y1s7k6?p=11 ...

  2. Git学习(3)GitHub和SVN的区别

    GitHub和SVN的区别 之前用的版本控制系统是SVN,但是最近因为流行使用GitHub,这篇文章认识一下Git和SVN的区别. 1)Git是分布式的,SVN不是:  这 是git和其它非分布式的版 ...

  3. (一)Git学习记录(不断更新)

    作为程序员如果你还不知道 Git 和 GitHub,说不过去吧,赶紧来学习一波. 一.认识GitHub Git 是个版本控制系统,说明白点就是进行代码的各种管理,比如你写错代码进行回滚啊.追寻 Bug ...

  4. Git学习记录 力做全网最强入门教程

    目录 Git学习记录 力做全网最强入门教程 什么是GitHub? 什么是Git? Git的配置 Git的安装(只介绍windos操作系统下) Git的配置 至此我们的入门教程到此结束,更新中级教程要等 ...

  5. Git学习记录(一)

    git-book 全面资料 git 用树形查看 (git 命令代替gitk查看节点树 part two 日常使用只要记住下图6个命令即可,但是学海无涯啊 ​ 常用 Git 命令清单.几个专用名词的译名 ...

  6. git学习——四git版本管理

    一.git版本管理的优势 都说git比svn强大,强大在哪呢? 首先,从部署上说:svn.cvs都是集中式的,一台服务器上部署服务,所有客户端编写的代码都要提交到该服务器上.git是分布式的,所有人都 ...

  7. Git学习笔记—Git Flow

    在Java程序开发中的定制开发规范,想要把项目正规高效的跑起来.引入 Git 版本控制,Git-Flow 便成为了首选. 今天动力节点Java学院来带你了解一下. 一.为什么使用 git-flow 当 ...

  8. 【git学习】git管理本地项目

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 最近打算使用git管理本地的项目,网上的资料很多,但是很杂,这这整理一下. 2.git使用 (1)初始 ...

  9. 【Git学习】git常用命令

    1) 查看日志 我们常用 -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新: 还有许多摘要选项可以用,比如 –stat,仅显示简要的增改行数统计 -p 按补丁格式显示每个更新之间 ...

最新文章

  1. 【Python 爬虫】 4、爬虫基本原理
  2. 一切都是对象---JAVA编程思想
  3. android 6.0 api 管理,Android 6.0(API23)权限申请问题
  4. ado filter 多条记录_注意!武汉江南中心绿道武九线综合管廊工程开工,青山区多条道路通行规则有变...
  5. Spring boot中使用log4j记录日志
  6. 利用QSharedMemory 保证单个程序运行
  7. Hyperledger Fabric 实战(七):链码 shim API 详解
  8. iertutil.dll文件缺失/ 修复方法
  9. 超星尔雅移动图书馆账号密码
  10. 深度学习论文: Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection及其PyTorch实现
  11. ifft2 二维快速傅里叶逆变换(Matlab)
  12. Linux操作手机端
  13. 洛谷 P2708 硬币翻转 题解
  14. 波卡(Polkadot)创始人Gavin Wood眼中加密世界
  15. Screaming Frog Log File Analyser 中文版安装教程
  16. 网络安全之几种常见的黑客攻击手段
  17. win7 快捷键冲突
  18. 极光开发者周刊【No.0423】
  19. mysql 数据库中 ,按照字母加数字的字符串排序
  20. 从零开始做单相逆变电源(硬件)

热门文章

  1. 防雷设计、防雷检测为什么选同为科技(TOWE)?
  2. 动态获取Arcgis中的ArcGISFeatureLayer的图例
  3. windows批量重命名文件,去除括号
  4. git上如何通过本地仓库推送自己的代码到远程仓储
  5. 《纽约时报》狗急跳墙,蓝翔技校点击率飙升
  6. ffmpeg 给 视频 加上 封面 图标 图片 shell 懒人系列 -21
  7. 解决Ubuntu16.04 支持exfat格式
  8. 前端实用技巧,JS压缩、美化、JS混淆加密
  9. 360奇酷手机 显示 Log
  10. 清风水波说的一句话.