重生之我在CSDN学Git -- Git的历史渊源与基本介绍

2024-01-04 06:20

本文主要是介绍重生之我在CSDN学Git -- Git的历史渊源与基本介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于Git

    • 写在前面
  • 你滴林皇 无限猖狂
  • Git的基本介绍
    • 总结

写在前面

The pyramid is built with stones pieces of.
金字塔是用一块块的石头堆砌而成的。
------ 威廉·莎士比亚


你滴林皇 无限猖狂

林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds,1969年12月28日- ),芬兰赫尔辛基人,著名的电脑程序员,Linux内核的发明人及该计划的合作者 [1] ,毕业于赫尔辛基大学计算机系,1997年至2003年在美国加州硅谷任职于全美达公司(Transmeta Corporation),现受聘于开放源代码开发实验室(OSDL:Open Source Development Labs, Inc),全力开发Linux内核。与妻子托芙(Tove,芬兰前女子空手道冠军)育有三个女孩。著有自传《乐者为王》。

在这里插入图片描述
在这里插入图片描述

↑没错就是这个笑起来核蔼可亲的男人

我们现在耳熟能详的linux系统,就是这位老哥在大学期间构建出来的,对,他当时21岁。
(别人的21岁,编程大佬;我们的21岁,侥幸健在)

最早的时候,linux系统中的代码都是经由世界各地的志愿者通过diff的方式发送给linus,然后他再一点点手动合并;不过就算是大佬,如此庞大的代码库再去用手工的方式去管理很难不会感到困难,所以我们的林皇就选择了一个商业的版本控制系统BitKeeper,双方合作的非常愉快,满满一幅欣欣向荣的景象。。。吗?合作的第三年,也就是2005年,他们之间发生了亿点小变故,linux最终和BitKeeper分道扬镳,但是没有控制系统是不行的,所以你滴林皇又找了一家公司去借用他们的控制系统吗?当然没有,他自己花了两周的时间用C写了一个分布式版本控制系统,这就是大名鼎鼎的Git。短短一个月之内,linux系统的源码就已经可以由Git管理了,之后Git迅速发展,是目前世界上最先进的分布式版本控制系统。

BitKeeper的东家BitMover,我知道你们很急,但是你们先别急。
如果不是当年你们的“举手之劳”,可能今天我们就没有这样一款免费而且好用的Git。
听我说谢谢你~
(BitMover内心:“巴山楚水凄凉地,baby can you kiss me?”)


Git的基本介绍

Git是一种分布式的版本控制工具,也是一种主流的代码托管技术。

有朋友要问了,版本控制是什么呢?版本控制是指软件开发过程中各种程序代码,说明文档等文件的变更进行管理,它将追踪文件变化,记录文件的变更时间,变更内容,甚至变更执行人进行记录。

差点忘了介绍集中式和分布式了,这段划掉

集中式版本控制系统
集中式版本控制系统的版本库是集中存放在中央服务器中。
死板的官话讲完了,举个例子来简单说明,可以把中央服务器比作一座大图书馆,我们每一个人就是其中的图书管理员,假如发现了某本书的摆放位置不对,我们肯定要先把他取出来对吧,然后找到正确的位置,再把书本重新摆放进去,这就是集中式版本控制系统的流程。
它的优点我不置与否,但是缺点可以拿出来好好说说。缺点很精简,一句话就可以总结,它必须在联网状态下才能工作。企业中一般都是用的他们内部的局域网络,所以网速可以保障,但是一旦使用互联网的话,可能会因为网速的原因导致使用非常不便。
常见的集中式版本控制系统
CVS:最早的一款免费开源的集中式版本控制系统,但是存在提交的文件不完整,版本库损坏等问题;
SVN:目前市面上应用最多的免费开源的集中式版本控制系统,它修复了CVS的一些稳定性问题;
还有一些付费的,比如IBM公司的ClearCase,微软的VSS等。

分布式版本控制系统
分布式版本控制系统没有“中央服务器”,但是每个人的电脑上都是一个完成的版本库。
顾名思义,使用分布式版本控制系统的时候不需要联网,和集中式版本控制系统相比,安全性要高了很多,因为每个人电脑里都有完整的库,某台电脑数据损坏直接从别的电脑复制一份就可以,而集中式版本控制系统的中央服务器如果出了问题,那么所有的工作都不可以进行了,这就是分布式版本控制系统最大的优点。
而Git则是分布式版本控制系统中的佼佼者,它强大的分支管理和便捷的使用,把SVN等远远地抛在了后面。


总结

本文简单介绍了一下GIt的历史渊源以及基本介绍,希望大伙看了以后不是屎壳郎碰上便秘的,白来一趟。

“有些人生来就具有统率百万人的领袖风范;另一些人则是为写出颠覆世界的软件而生。唯一一个能同时做到这两者的人,就是托瓦兹。”

这是美国《时代》周刊对“Linux之父”,“Git之父”林纳斯·托瓦兹给予的极高评价,相信以后Git会在他的带领下越做越好。

最后还是要说一句我们的老熟人BitMover公司,你可真是 肚脐眼儿放屁,怎么响的啊


这篇关于重生之我在CSDN学Git -- Git的历史渊源与基本介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/568416

相关文章

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.