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

news2024/10/2 20:24:49

        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.coloradmin.cn/o/1394990.html

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

相关文章

Docker本地私有仓库搭建配置指导

一、说明 因内网主机需要拉取镜像进行Docker应用,因此需要一台带外主机作为内网私有仓库来提供内外其他docker业务主机使用。参考架构如下: 相关资源:加密、Distribution registry、Create and Configure Docker Registry、Registry部署、D…

Ivanti Connect Secure 曝两大零日漏洞,已被大规模利用

威胁情报公司Volexity发现,影响 Ivanti 的 Connect Secure VPN 和 Policy Secure 网络访问控制 (NAC) 设备的两个零日漏洞正在被大规模利用。自1月11日开始,多个威胁组织在大范围攻击中利用CVE-2023-46805身份验证绕过和CVE-2024-21887命令注入漏洞。 V…

Joern环境的安装(Windows版)

Joern环境的安装(Windows版) 网上很少有关于Windows下安装Joern的教程,而我最初使用也是装在Ubuntu虚拟机中,这样使用很占内存,影响体验感。在Windows下使用源码安装Joern也是非常简单的过程: 提前需要的本地环境: …

YOLOv5全网独家首发:DCNv4更快收敛、更高速度、更高性能,效果秒杀DCNv3、DCNv2等 ,助力检测实现暴力涨点

💡💡💡本文独家改进:DCNv4更快收敛、更高速度、更高性能,完美和YOLOv5结合,助力涨点 DCNv4优势:(1) 去除空间聚合中的softmax归一化,以增强其动态性和表达能力;(2) 优化存储器访问以最小化冗余操作以加速。这些改进显著加快了收敛速度,并大幅提高了处理速度,DCN…

vue:处理base64格式文件pdf、图片预览

一、需求:后端返回是base64数据,需要前端处理来展示文件。 二、实现方法: 解释一下这段代码的功能: )preview(item) 是一个函数,接受一个参数 item,其中包含了文件的相关信息。 )首…

SpringBoot的自定义starter和SpringBoot Starter机制,以及综合案例和通用模块-短信发送,基于AOP技术实现日志切面

目录 1.SpringBoot Starter机制 1.1.什么是SpringBoot Starter 1.2.为什么要使用SpringBoot Starter 1.3.应用场景 1.4.自动加载核心注解说明 2.综合案例 2.1.命名规范 2.2.通用模块-短信发送 2.2.1.创建配置类Properties 2.2.2.编写短信业务功能 2.2.3.创建自动配置…

基于Python+django影片数据爬取与数据分析设计与实现

目录 一、 前言介绍: 二 、功能设计: 三、功能实现: 系统登录实现 管理员实现 用户模块实现 四、库表设计: 五、关键代码: 六、论文参考: 七、其他案例: 八、源码获取: 一…

各省快递量数据, shp+excel,2001-2021年,已实现数据可视化

基本信息. 数据名称: 各省快递量数据 数据格式: shpexcel 数据时间:2001-2021年 数据几何类型: 面 数据坐标系: WGS84 数据来源:网络公开数据 数据字段: 序号字段名称字段说明1a_2001快递量/万件_2001年2a_2002快递量/万件_2002年3…

FairyGUI Day 1 导入FairyGUI

FairyGUI Unity3d引擎版本:Uinty3d 20233.2.3f1 1、从资产商店中将FairyGUI购入我的资产中,目前是免费的。 2、从我的资产中将FairyGUI导入到当前项目中。 3、我遇到的问题,我的Assets下有两个文件夹分别是Resources和Scenes,导…

AEB滤镜再破碎,安全焦虑「解不开」?

不久前,理想L7重大交通事故,再次引发了公众对AEB的热议。 根据理想汽车公布的事故视频显示,碰撞发生前3秒,车速在178km/h时驾驶员采取了制动措施,但车速大幅超出AEB(自动紧急刹车系统)的工作范…

【笔记】认识电机

认识电机 电机一些概念永磁同步电机电机的效率转矩永磁体定子和转子励磁电磁感应定律 AC Optimal Power Flow功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居…

esp32-idf eclipse 定时器的使用demo

esp32定时器的使用demo 1、介绍 ESP32芯片包含两个硬件定时器组。每组有两个通用硬件定时器。它们都是基于16位预分频器和64位自动重载功能的向上向下计数器的64位通用定时器。 2、API接口函数 创建定时器函数: esp_timer_create(); esp_err_t esp_timer_create …

P4学习(四)实验一:Basic Forwarding

目录 一.前置知识二.实验过程记录1.找到实验文件2.拓扑图3.明确实验内容4.实验初体验 三. 编写解决方案1.Parse部分1.1 Code1.2 知识点解析 2.Ingress部分2.1 Code2.2 知识点解析 3.Deparse部分3.1 Code3.2 知识点 四.实验完成测试 一.前置知识 Linux基础命令(vim)V!Model的架…

大模型多卡训练原理

背景知识 深度学习涉及大量矩阵运算,而矩阵运算可以并行计算。 一、数据并行 每张卡加载不同的数据,将计算结果合并 存在问题:每个显卡都加载了模型,浪费了一定空间 二、模型并行:适合模型特别大的情况 1、串行计算…

Java Springboot SSE如何判断客户端能否正常接收消息

目录 背景解决方案思路代码代码解释 Java反射知识点补充 背景 当新建一个 emitter 对象的时候, 它的默认超时时间是 30s. SseEmitter emitter new SseEmitter(); 但是很多情况下, 默认30s的时间太短, 需要把 emitter 对象的超时时间设置成不超时, 也就是永久有效. private …

RHEL8 Samba服务器详细配置用户模式

任务: 配置server01为samba服务器,samba服务器的/companydata/sales为共享目录,共享名为sales,里面创建测试文件test_share.tar,创建用户组sales,创建组内用户sale1,要求配置用户模式访问&#…

py爬虫入门笔记(request.get的使用)

文章目录 Day11. 了解浏览器开发者工具2. Get请求http://baidu.com3. Post请求https://fanyi.baidu.com/sug4. 肯德基小作业 Day21. 正则表达式2. 使用re模块3. 爬取豆瓣电影Top250的第一页4. 爬取豆瓣电影Top250所有的250部电影信息 Day31. xpath的使用2. 认识下载照片线程池的…

【翻译】在Qt Designer中创建主窗口(Main Windows)

原文地址:https://doc.qt.io/qt-6/designer-creating-mainwindows.html Qt Designer 可用于为不同用途创建用户界面,并为每个用户界面提供不同类型的模板。主窗口模板用于创建具有菜单栏、工具栏和停靠窗口部件的应用程序窗口。 通过打开文件菜单并选择…

工程档案数字化的意义

工程档案数字化可以提高档案管理效率、节约资源成本、保护档案安全、提高档案可持续性、提升检索与利用的便捷性,促进信息共享与合作,具有重要的意义和价值。 1. 提高档案管理效率:数字化档案可以通过电子方式进行存储、检索和共享&#xff0…

企业网盘的价值:为什么企业需要它?

企业网盘因其主打的文件管理协作功能,正好符合信息时代高速发展下企业的需要,能够帮助企业集中管理文件数据,提供便捷的文件协作服务,一跃成为近两年企业服务类产品榜单中的一匹黑马。 企业网盘真的这么好用吗?企业真…