参考源

https://www.bilibili.com/video/BV1FE411P7B3?spm_id_from=333.999.0.0

版本

本文章基于 Git 2.35.1.2


版本控制

版本控制(Revision Control)是在开发过程中用于管理文件修改历史,方便查看和备份。

它的作用如下:

  • 实现跨区域多人协同开发。
  • 追踪和记载一个或者多个文件的历史记录。
  • 组织和保护你的源代码和文档。
  • 统计工作量。
  • 并行开发、提高开发效率。
  • 跟踪记录整个软件的开发过程。
  • 减轻开发人员的负担,节省时间,同时降低人为错误。

简单说就是用于管理多人协同开发项目的技术。

常见的产品

主流的版本控制器如下:

  • Git
  • SVN(Subversion)
  • CVS(Concurrent Versions System)
  • VSS(Micorosoft Visual SourceSafe)
  • TFS(Team Foundation Server)
  • RCS(GNU Revision Control System)

除了这些主流的产品,还有一些其他的产品:

  • Visual Studio Online
  • Perforce
  • Rational ClearCase
  • Serena Dimention
  • SVK
  • BitKeeper
  • Monotone
  • Bazaar
  • Mercurial
  • SourceGear Vault

现在影响力最大且使用最广泛的是 GitSVN

SVN 由于其局限性,近年来的地位已经慢慢被 Git 所取代,现在 Git 是世界上最先进的分布式版本控制系统

分类

本地版本控制

记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用。

代表产品:RCS

集中版本控制

所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。

所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本。

如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。

而且,所有数据都保存在单一的服务器上,如果这个服务器损坏,就会丢失所有的数据,需要定期备份。

代表产品:SVNCVSVSS

分布式版本控制

所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史。

在没有网络的情况下,可以离线在本地提交,只需在连网时推送到相应的服务器或其他用户那里。

由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据。

不会因为服务器损坏或者网络问题,造成不能工作的情况,极大的降低了风险。

代表产品:Git

Git 与 SVN 区别

SVN 是集中式版本控制系统,版本库是放在中央服务器的。

工作的时候,首先要从中央服务器得到最新的版本,完成工作后,需要把自己做完的活推送到中央服务器。

集中式版本控制系统是必须联网才能工作,且对网络带宽要求较高。

Git 是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库。

工作的时候不需要联网,因为版本都在自己电脑上。

待有网络后,把本地的版本推送到远程即可。

历史

同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。

一切始于 Linux 的维护,众所周知,Linux 内核开源项目有着为数众多的参与者。


1991-2002 年间,绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上。

由于提交的内容繁多,这些工作是非常痛苦的。


到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。

在这期间,Linux 社区中很多的大佬破解研究 BitKeeper。


到 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了免费使用的权力。

这就迫使 Linux 开源社区开发出自己的版本系统。

Linux 的缔造者 Linus Torvalds 花了两周左右的时间,开发出了 Git

Git 01 介绍的更多相关文章

  1. SourceTree 01 - git 客户端介绍

    SourceTree - git客户端介绍 SourceTree系列第1篇 --->> SourceTree 01 - git 客户端介绍(http://www.cnblogs.com/g ...

  2. Android Testing学习01 介绍 测试测什么 测试的类型

    Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...

  3. git使用介绍

    Git简单介绍 参考网址: git使用简介 这个教程推荐使用:git教程 git和svn的差异 git和svn的最大差异在于git是分布式的管理方式而svn是集中式的管理方式.如果不习惯用代码管理工具 ...

  4. 1、git基础介绍及远程/本地仓库、分支

    1. Git基础介绍 基于Git进行开发时,首先需要将远程仓库代码clone到本地,即为本地仓库.后续大部分时间都是基于本地仓库上的分支进行编码,最后将本地仓库的代码合入远程仓库. 1.1. 远程仓库 ...

  5. git基础介绍

    git基础介绍 这是git操作的基础篇,是以前的写的操作文档,就没有进行手打,直接把图片贴进来了,你们担待哈,有不正确的地方可以指正出来,我将在第一时间去修改,多谢哈! 一.文件状态:git系统的文件 ...

  6. GitHub的SSH key配置以及常用的git命令介绍

    一. GitHub的SSH key配置 (以windows为例,Mac iOS系统类似) SSH Key 是一种方法来确定受信任的计算机,从而实现免密码登录.Git是分布式的代码管理工具,远程的代码管 ...

  7. Redis学习01——介绍与搭建环境

    Redis学习01介绍与搭建环境一简介二yum配置已经配置了的可以跳过三安装gcc四安装redis1 上传Redis到linux中2 解压到usrlocal下3 编译redis4 安装redis5 拷 ...

  8. 版本控制工具(SVN/Git)介绍

    文章大纲 一.SVN介绍二.Git介绍三.IDEA使用SVN和Git四.总结五.参考文章   一.SVN介绍 1. SVN服务器搭建和使用 首先来下载和搭建SVN服务器,下载地址如下: http:// ...

  9. GIT命令介绍

    Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下. 区别与集中式的分布式实现!!!! 集中 ...

随机推荐

  1. JS基础6--逻辑运算符

     &&与  ||或   !非      如果对一个值进行两次取反,它不会变化      如果对一个非布尔值进行取反,则会将其转换为布尔值,再取反      所以我们可以利用该特点.来将 ...

  2. .NET C#基础(4):属性 - 本质是方法

    0. 文章目的   本文面向有一定.NET C#基础知识的学习者,介绍C#中属性的属性.定义.使用方法以及特殊性. 1. 阅读基础   理解C#基本语法(定义类及类成员,调用方法)   认可OOP的封 ...

  3. CabloyJS - GitHub Readme

    简体中文 | English CabloyJS CabloyJS是一款顶级NodeJS全栈业务开发框架, 基于KoaJS + EggJS + VueJS + Framework7 文档 官网 & ...

  4. 编程式导航路由跳转到当前路由(参数不变), 多次执行会抛出NavigationDuplicated的警告错误?

    注意:编程式导航(push|replace)才会有这种情况的异常,声明式导航是没有这种问题,因为声明式导航内部已经解决这种问题. 这种异常,对于程序没有任何影响的. 为什么会出现这种现象: 由于vue ...

  5. 如何在Vue项目中,通过点击DOM自动定位VScode中的代码行?

    作者:vivo 互联网大前端团队- Youchen 一.背景 现在大型的 Vue项目基本上都是多人协作开发,并且随着版本的迭代,Vue 项目中的组件数也会越来越多,如果此时让你负责不熟悉的页面功能开发 ...

  6. 并发编程原理学习:synchronized关键字

    概述 关键字synchronized可以修饰方法或者以同步代码块的形式来进行使用,它主要确保多个线程在同一时刻只能有一个线程处于方法或者同步块中,它保证了线程对变量访问的可见性和排他性. 同步代码块 ...

  7. 【翻译】驯服野兽:Scylla 如何利用控制理论来控制压实

    教程翻译自Seastar官方文档:https://www.scylladb.com/2018/06/12/scylla-leverages-control-theory/ 转载请注明出处:https: ...

  8. Vue回炉重造之封装防刷新考试倒计时组件

    <!-- 考试倒计时组件 --> <template> <div class="time"> <p>00:{{timerCount2 ...

  9. ngRoute 配置路径不能跳转问题

    1.原因:AngularJS 版本更新至1.6后对地址做了特别处理.如:<a hret="#/someurl"> 在浏览器中被解析为"#!%2Fsomeurl ...

  10. Quick Pow: 如何快速求幂

    今天讲个有趣的算法:如何快速求 \(n^m\),其中 n 和 m 都是整数. 为方便起见,此处假设 m >= 0,对于 m < 0 的情况,求出 \(n^{|m|}\) 后再取倒数即可. ...