当前位置: 首页 > news >正文

Git学习笔记(第1章):Git概述

目录

1.1 版本控制

1.1.1 何为版本控制

1.1.2 为什么需要版本控制

1.1.3 版本控制工具

1.2 发展历史

1.3 工作机制 

1.4 代码托管中心(远程库)


        Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。

        Git易于学习占地面积小性能极快。它具有廉价的本地库方便的暂存区域多个工作流分支等特性。其性能优于Subversion、CVS、Perforce 和 ClearCase等版本控制工具。

1.1 版本控制

1.1.1 何为版本控制

        版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。

        版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本方便版本切换

1.1.2 为什么需要版本控制

        个人开发过渡到团队协作。

1.1.3 版本控制工具

集中式版本控制工具:CVS、SVN(Subversion)、VSS……

  • 特点:集中化的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新的文件。多年以来,这已成为版本控制系统的标准做法。
  • 优点:每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。
  • 缺点中央服务器的单点故障
    • 如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。

分布式版本控制工具:Git、Mercurial、Bazaar、Darcs……

  • 客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。
  • 解决了集中式版本控制系统的缺陷:
    • 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
    • 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

1.2 发展历史

  • 1991年:Linux系统发布
    • Linus Torvalds于1991年首次发布了Linux内核。在最初的日子里,Linus通过手动合并代码来管理版本。这种手动合并的方式在项目逐渐庞大时变得不够高效,促使了后来对版本控制系统的需求。
  • 2002年:BitKeeper开源版本控制系统
    • BitKeeper是一个分布式版本控制系统,由BitMover公司开发。在2002年,BitKeeper提供了免费的开源版本供Linux内核社区使用。Linux社区开始使用BitKeeper来管理代码版本,提高了开发效率。
  • 2005年:BitKeeper的争议和Git诞生
    • 在使用BitKeeper的过程中,发生了一些争议。BitMover公司收回了Linux社区的免费使用权,这促使了Linus Torvalds开始寻找替代方案。
    • Linus Torvalds在Linux内核开发过程中感受到BitKeeper版本控制系统的限制,于是决定开发一个新的版本控制系统。他在2005年创建了Git,并在Linux社区中推广使用。
  • 2005-2007年:Git的早期阶段
    • Git在Linux社区中迅速流行起来,并被其他开源项目广泛采用。Git的分布式特性、性能和灵活性使其成为许多开发者的首选版本控制系统。
  • 2008年:GitHub成立
    • GitHub是一个基于Git的代码托管平台,于2008年成立。GitHub的出现极大地促进了Git的普及,为开发者提供了方便的协作和社交工具。
  • 2012年:GitLab成立
    • GitLab是另一个代码托管平台,也于2012年成立。与GitHub不同,GitLab提供了一个开源的自托管选项,使得组织可以在自己的服务器上部署GitLab。
  • 2016年:Microsoft收购GitHub
    • Microsoft在2018年收购了GitHub,这一举动引起了一些开发者的担忧,但同时也表明了对开源社区的承诺。GitHub继续保持独立运营。
  • 其他发展
    • Git一直在不断发展,通过不断的更新和改进来满足不断变化的开发需求。社区中有很多贡献者为Git的发展做出了重要的贡献。

1.3 工作机制 

1.4 代码托管中心(远程库)

        代码托管中心是基于网络服务器的远程代码仓库,一般简称为远程库。

  • 局域网:GitLab
  • 互联网
    • GitHub(外网)
    • Gitee 码云(国内网站)

相关文章:

  • RDMA Scatter Gather List详解
  • Go 日期时间包装器:15条更便捷的时间处理
  • (学习日记)2024.01.19
  • C++:史上最坑小游戏
  • 【RabbitMQ】快速入门及基本使用
  • C#,字符串匹配(模式搜索)有限自动机(Finite Automata)算法的源代码
  • 配置中心原理和选型
  • Python文件自动化处理
  • vue 解决el-table 表体数据发生变化时,未重新渲染问题
  • 代码随想录算法训练53 | 动态规划part14
  • 带你学C语言-指针(4)
  • cetos7搭建部署k8s 版本1.28
  • Docker进阶篇-安装MySQL主从复制
  • nestjs之provider的provide取值的几种方式
  • 设计模式篇章(4)——十一种行为型模式
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • docker容器内的网络抓包
  • gcc介绍及安装
  • Intervention/image 图片处理扩展包的安装和使用
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript DOM 10 - 滚动
  • JavaScript 一些 DOM 的知识点
  • Javascript基础之Array数组API
  • JS+CSS实现数字滚动
  • MySQL的数据类型
  • Node项目之评分系统(二)- 数据库设计
  • vagrant 添加本地 box 安装 laravel homestead
  • vue2.0项目引入element-ui
  • windows-nginx-https-本地配置
  • 搭建gitbook 和 访问权限认证
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 将 Measurements 和 Units 应用到物理学
  • 力扣(LeetCode)21
  • 实习面试笔记
  • 推荐一个React的管理后台框架
  • 系统认识JavaScript正则表达式
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • #162 (Div. 2)
  • #每日一题合集#牛客JZ23-JZ33
  • $ git push -u origin master 推送到远程库出错
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (4) PIVOT 和 UPIVOT 的使用
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (ZT)一个美国文科博士的YardLife
  • (翻译)terry crowley: 写给程序员
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (十三)Maven插件解析运行机制
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析