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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode19:删除链表的倒数第N个结点

力扣题目链接 思路:由于本题有可能删除头结点,为保证删除头结点和其他结点的操作一致,因此首先创建一个虚拟头结点dummy。 其次,本题需要删除倒数第N个结点,由于单链表只有next指针,因此需要找到倒数第N1…

事件驱动架构

请求驱动 服务注册,服务发现,虽然调用地址隐藏了,但是调用stub必须相同。 rpc通信,远程调用。 生产者和消费者要有相同的stub存根。 消费者和生产者的调用接口是耦合的。 事件驱动 核心:上下游不进行通信 中间通过M…

AP5101C 高压线性 LED恒流驱动器 DFN2*2 LED灯汽车雾灯转向灯

产品描述 AP5101C 是一款高压线性 LED 恒流芯片 , 简单 、 内置功率管 , 适用于6- 100V 输入的高精度降压 LED 恒流驱动芯片。电流2.0A。AP5101C 可实现内置MOS 做 2.0A,外置 MOS 可做 3.0A 的。AP5101C 内置温度保护功能 ,温度保护点为 130 …

「Kafka」Broker篇

「Kafka」Broker篇 主要讲解的是在 Kafka 中是怎么存储数据的,以及 Kafka 和 Zookeeper 之间如何进行数据沟通的。 Kafka Broker 总体工作流程 Zookeeper 存储的 Kafka 信息 启动 Zookeeper 客户端: [atguiguhadoop102 zookeeper-3.5.7]$ bin/zkCli.sh通…

go语言(一)----声明变量

package mainimport ("fmt""time" )func main() {fmt.Print("hello go!")time.Sleep(1 * time.Second)}运行后,结果如下: 1、golang表达式中,加;和不加;都可以 2、函数的{和函数名一…

范围运算between...and和空判断

目录 between...and 空判断 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 between...and between...and的主要功能是用户进行范围查询,语法如下: select 字段 | 数值 between 最小值 and 最大值; 1.查询工资在 1500 ~ 3000 的所…

【Qt】信号和槽

需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云<--/-->阿里云<--/-->华为云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、Qt中的信号和槽 1、信号 2、槽 3、Q_OBJECT 二、Qt中的connect函…

【Go面试向】实现map稳定的有序遍历的方式

问题 大家好 我是寸铁&#x1f44a; 总结了一篇实现map稳定的有序遍历的方式探讨的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 你对 map 了解多少&#xff1f;如果要实现第一个稳定的有序遍历有哪些方式&#xff1f; 回答 你对 map 了解多少&#xff1f; 我对map有一定的…

RHCSA上课笔记(前半部分)

第一部分 网络服务 第一章 例行性工作 1.单一执行的例行性工作 单一执行的例行性工作&#xff08;就像某一个时间点 的闹钟&#xff09;&#xff1a;仅处理执行一次 1.1 at命令&#xff1a;定时任务信息 [rhellocalhost ~]$ rpm -qa |grep -w at at-spi2-core-2.40.3-1.el9.x…

Qt文件和目录相关操作

1.相关说明 QCoreApplication类、QFile类、QDir、QTemporaryDir类、QTemporaryFile类、QFileSystemWatcher类的相关函数 2.相关界面 3.相关代码 #include "dialog.h" #include "ui_dialog.h" #include <QFileDialog> #include <QTemporaryDir>…

【JavaEE】网络原理:网络中的一些基本概念

目录 1. 网络通信基础 1.1 IP地址 1.2 端口号 1.3 认识协议 1.4 五元组 1.5 协议分层 什么是协议分层 分层的作用 OSI七层模型 TCP/IP五层&#xff08;或四层&#xff09;模型 网络设备所在分层 网络分层对应 封装和分用 1. 网络通信基础 1.1 IP地址 概念:IP地址…

AIGC语言大模型涌现能力是幻觉吗?

Look&#xff01;&#x1f440;我们的大模型商业化落地产品&#x1f4d6;更多AI资讯请&#x1f449;&#x1f3fe;关注Free三天集训营助教在线为您火热答疑&#x1f469;&#x1f3fc;‍&#x1f3eb; 在自然界中&#xff0c;涌现现象无处不在&#xff0c;从鸟群的和谐飞翔到生…

【C++】unordered_map,unordered_set模拟实现

unordered_map&#xff0c;unordered_set模拟实现 插入普通迭代器const迭代器unordered_map的[ ]接口实现查找修改哈希桶完整代码unordered_map完整代码unordered_set完整代码 喜欢的点赞&#xff0c;收藏&#xff0c;关注一下把&#xff01; 上一篇文章我们把unordered_map和u…

基于JavaWeb+SSM+Vue基于微信小程序的网上商城系统的设计和实现

基于JavaWebSSMVue基于微信小程序的网上商城系统的设计和实现 滑到文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 滑到文末获取源码 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想…

深度剖析跨境商城源码架构,助你把握行业动向

跨境电商作为当今电商行业的热点&#xff0c;其源码架构备受关注。作为专家&#xff0c;我将深度剖析跨境商城源码架构&#xff0c;帮助你把握行业动向。 跨境商城源码架构的基本组成 跨境商城源码架构一般包括前台系统、后台管理系统、数据管理系统和安全系统四大模块。前台…

LabVIEW振动数据采集与分析系统

在这个项目中&#xff0c; LabVIEW软件配合精确的硬件组件&#xff0c;以实现高效的振动数据采集和复杂信号分析。硬件方面&#xff0c;系统采用了PCB振动加速度传感器的高灵敏度传感器&#xff0c;以及NI9234型号的数据采集卡&#xff0c;确保了数据采集的高精度和可靠性。软件…

实用干货:最全的Loading动画合集网站!复制即用

大家好&#xff0c;我是大澈&#xff01; 本文约1000字&#xff0c;整篇阅读大约需要2分钟。 感谢关注微信公众号&#xff1a;“程序员大澈”&#xff0c;免费领取"面试礼包"一份&#xff0c;然后免费加入问答群&#xff0c;从此让解决问题的你不再孤单&#xff01…

OpenHarmony 应用开发入门 (二、应用程序包结构理解及Ability的跳转,与Android的对比)

在进行应用开发前&#xff0c;对程序的目录及包结构的理解是有必要的。如果之前有过android开发经验的&#xff0c;会发现OpenHarmony的应用开发也很简单&#xff0c;有很多概念是相似的。下面对比android分析总结下鸿蒙的应用程序包结构&#xff0c;以及鸿蒙对比android的诸多…

Dobbo --- HelloWorld项目搭建

Dobbo-HelloWorld 1. demo -- spring方式集成1.1 实现步骤 2. demo -- springboot方式集成2.1 实现provider2.2 实现consumer2.3 项目测试 1. demo – spring方式集成 dubbo官方文档 提供一个可被调用的接口 提供方&#xff1a;实现接口的方法逻辑&#xff0c;启动应用程序&a…

python实操之网络爬虫介绍

一、什么是网络爬虫 网络爬虫&#xff0c;也可以叫做网络数据采集更容易理解。它是指通过编程向网络服务器&#xff08;web&#xff09;请求数据&#xff08;HTML表单&#xff09;&#xff0c;然后解析HTML&#xff0c;提取出自己想要的数据。 它包括了根据url获取HTML数据、解…