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

        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 码云(国内网站)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/632132.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见的系统性能指标:QPS、TPS

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 系列专栏目录 [Java项目…

华为设备NAT的配置

实现内网外网地址转换 静态转换 AR1: sys int g0/0/0 ip add 192.168.10.254 24 int g0/0/1 ip add 22.33.44.55 24 //静态转换 nat static global 22.33.44.56 inside 192.168.10.1 动态转换 最多有两台主机同时访问外网 AR1: sys int g0/0/0 ip add…

享元模式介绍

目录 一、享元模式介绍 1.1 享元模式定义 1.2 享元模式原理 1.2.1 享元模式类图 1.2.2 模式角色说明 1.2.3 示例代码 二、享元模式的应用 2.1 需求说明 2.2 需求实现 2.2.1 类图 2.2.2 具体实现 2.2.2.1 抽象享元类 2.2.2.2 共享享元类-白色棋子 2.2.2.3 共享享元…

计算机网络——运输层(1)暨小程送书

计算机网络——运输层(1)暨小程送书 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 运输层概述两个主要协议运输层和网络层的关系网络层运输层总结 多路复用与多路分解多路复用多路分解不同的技术实现时分复用(TDM)频分复…

[STM32F407ZET6] GPIO

GPIO模式 F4的GPIO功能比F1的功能更多一些, 但是整体框架一样. F4的输出配置和F1的不同, F4的配置后, 施密特触发器将会开启, 还会对输入寄存器进行采样读取. F1的配置后, 推挽输出将会关闭施密特触发器, 开漏模式读取会读输入寄存器, 推挽模式会读取输出寄存器的值. 输出(全…

Java毕业设计-基于jsp+servlet的家用电器购物商城管理系统-第87期

获取源码资料,请移步从戎源码网:从戎源码网_专业的计算机毕业设计网站 项目介绍 基于jspservlet的家用电器购物商城管理系统:前端 jsp、jquery、layui,后端 servlet、jdbc,角色分为管理员、用户;集成商品…

分布式Erlang/OTP(学习笔记)(一)

Erlang分布式基础 假设你在机器A和机器B上各跑着一个Simple Cache应用的实例。要是在机器A的缓存上插人一个键/值对之后,从机器B上也可以访问,那可就好了。显然,要达到这个目的,机器A必须以某种方式将相关信息告知给机器B。传递该…

macOS向ntfs格式的移动硬盘写数据

最近想把日常拍摄的照片从SD存储卡中转存到闲置的移动硬盘中,但是转存的时候发现,mac只能读我硬盘里的东西,无法将数据写入到移动硬盘中,也无法删除移动硬盘的数据。后来在网上查了许久资料,终于可实现mac对移动硬盘写…

修改iview的表格table展开的默认icon和样式

修改前 修改后 修改内容 .title_label_list .ivu-icon-ios-add{font-size: 26px;color: #888888; } .title_label_list .ivu-icon-ios-add:hover{color: #11AAAA; } .title_label_list .ivu-icon-ios-add:before {content: "\F341"; } .title_label_list .ivu-icon-…

Vue3/Vue2实现文章内容中多个“关键词“标记高亮显示

一、实现效果 下拉列表高亮展示关键词 二、实现思路 安装 “vue-word-highlighter” ,这是一个 支持 Vue3 和 Vue2,不过 Vue2 版本是通过 vue-demi 构建的 三、案例代码 package.json "vue-word-highlighter": "^1.0.4"Vue3 …

银河麒麟服务器操作系统搭建证书服务器并颁发可用于签名的证书步骤说明

银河麒麟服务器操作系统搭建证书服务器并颁发可用于签名的证书的方法与前面Centos7上(centos7 使用openssl 配置证书服务器并颁发证书(史上最详细版本)_centos phpinfo显示的openssl配置项为/etc/pki/tls/openssl.c-CSDN博客)是一…

【计算机组成与体系结构Ⅱ】多Cache一致性的模拟分析(实验)

实验八:多Cache一致性的模拟分析 一、实验目的 1:加深对多 Cache 一致性的理解。 2:进一步掌握解决多 Cache一致性的目录协议和监听协议的基本思想。 3:掌握在各种情况下, 目录协议和监听协议是如何工作的&#xf…

跨Android、iOS、鸿蒙多平台框架ArkUI-X

ArkUI是一套构建分布式应用界面的声明式UI开发框架。它使用极简的UI信息语法、丰富的UI组件、以及实时界面预览工具,帮助您提升移动应用界面开发效率30%。您只需使用一套ArkTS API,就能在Android、iOS、鸿蒙多个平台上提供生动而流畅的用户界面体验。 一…

16.7 基于递归神经网络的分层多楼多层室内定位

文献来源:西交利物浦大学 Elesawi A E A, Kim K S. Hierarchical multi-building and multi-floor indoor localization based on recurrent neural networks[C]//2021 Ninth International Symposium on Computing and Networking Workshops (CANDARW). IEEE, 202…

MySQL优化之SQL调优策略

首先以一张思维导图从全局上给大家分享以下几种SQL优化策略,再详细讲解 1、避免使用SELECT * 在阿里的编码规范中也强制了数据库查询不能使用SELECT *,因为SELECT *方式走的都是全表扫描,导致的结果就是查询效率非常低下,其原因为…

苹果笔记本 macbook 在 office word 中使用 mathtype 的方法

前言 想在 MacBook 中使用 mathtype,去搜索,去 Apple Store 下载也发现没有 解决方法 打开 office Word 的「插入」中的「获取加载项」、「我的加载项」。 在应用商店中下载,需要登录自己的微软账号。 加载成功后就可以使用了。 注意 和…

【Unity实战100例】Unity对Ini格式的配置文件管理和读写

目录 一.编写ini格式配置文件 二.读取解析ini文件 三.调用属性 INI 文件以文本形式存储,易于阅读和编辑。这种人可读的格式使得调整配置参数变得更加直观,不需要专门的工具。 INI 文件是一种轻量级的配置文件格式,不需要复杂的解析器或库。它的结构相对简单,适用于小到

What is `addFormattersdoes` in `WebMvcConfigurer` ?

addFormatters 方法在SpringMVC框架中主要用于向Spring容器注册自定义的格式化器(Formatter) SpringMVC内置了一系列的标准格式化器,用于处理日期、数字和其他常见类型的转换。 开发者也可以通过实现 WebMvcConfigurer 接口,并重写…

Unix时间戳

时间戳,相信很多相关专业的人,计算机软件电子等等都会听过。由于最早是由Unix系统使用所以又叫Unix时间戳。 Unix 时间戳(Unix Timestamp)定义为从UTC(世界协调时)/GMT(格林尼治时)…

内网穿透的应用-使用Docker搭建一个Wiki.Js知识库系统并实现分享他人远程创作

文章目录 1. 安装Docker2. 获取Wiki.js镜像3. 本地服务器打开Wiki.js并添加知识库内容4. 实现公网访问Wiki.js5. 固定Wiki.js公网地址 不管是在企业中还是在自己的个人知识整理上,我们都需要通过某种方式来有条理的组织相应的知识架构,那么一个好的知识整…