重生之我在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

相关文章

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必

Kotlin 协程之Channel的概念和基本使用详解

《Kotlin协程之Channel的概念和基本使用详解》文章介绍协程在复杂场景中使用Channel进行数据传递与控制,涵盖创建参数、缓冲策略、操作方式及异常处理,适用于持续数据流、多协程协作等,需注... 目录前言launch / async 适合的场景Channel 的概念和基本使用概念Channel 的

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

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