Git 简单介绍

ops/2024/10/20 10:00:09/

目录

  • 版本管理工具概念
  • 版本管理工具介绍
    • 版本管理发展简史(维基百科)
      • SVN(SubVersion)
      • Git
  • Git 发展简史

版本管理工具概念

我在大学毕业写论文的时候的时候碰到过如下的现象

<<毕业论文第一版.doc>>
<<毕业论文第二版.doc>>
<<毕业论文第三版.doc>>
<<毕业论文最终版.doc>>
<<毕业论文最终版2.doc>>

类似的问题我曾经也碰到过很多,例如:

领导让写文档,写好了,领导让修改,改好了,领导觉得第一版不错,改回来吧,此时内心一脸懵,第一版长啥样没存档啊

实际上,代码开发中也需要这样的软件来管理我们的代码. 例如我们经常会碰到如下的现象:

改之前好好的,改完就报错了,也没怎么修改啊

在这种情况下如果不能查看修改之前的代码,查找问题是非常困难的.

如果有一个软件能记录我们对文档的所有修改,所有版本,那么上面的问题讲迎刃而解.而这类软件我们一般叫做版本控制工具

版本管理工具一般具有如下特性:

1) 能够记录历史版本,回退历史版本
2) 团队开发,方便代码合并

版本管理工具介绍

现在比较流行的版本管理工具是git ,但是实际上git 是近几年才发展起来的,可能有一些老的项目,还在用一些老的软件,比如svn
在这里插入图片描述

版本管理发展简史(维基百科)

SVN(SubVersion)

工作流程

SVN是集中式版本控制系统,版本库是集中放在中央服务器的.
工作流程如下:1.从中央服务器远程仓库下载代码2.修改后将代码提交到中央服务器远程仓库

优缺点:

 优点: 简单,易操作缺点:所有代码必须放在中央服务器  1.服务器一旦宕机无法提交代码,即容错性较差2.离线无法提交代码,无法及时记录我们的提交行为

svn流程图
在这里插入图片描述

Git

工作流程

Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS),分为两种类型的仓库:
本地仓库和远程仓库
工作流程如下1.从远程仓库中克隆或拉取代码到本地仓库(clone/pull)2.从本地进行代码修改3.在提交前先将代码提交到暂存区4.提交到本地仓库。本地仓库中保存修改的各个历史版本5.修改完成后,需要和团队成员共享代码时,将代码push到远程仓库

在这里插入图片描述
总结:git和svn的区别

1. svn 是集中式版本控制工具,git 是分布式版本控制工具
2. svn 不支持离线提交,git 支持离线提交代码

Git 发展简史

林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds, 1969年~ )
在这里插入图片描述

很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。

Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?那个年代不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。

不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。而授权的前提是:Linux 社区的人不能开发具有相同功能的竞争产品!

另一方面,BitKeeper不是开源的. 显然与Linux 的开源精神不相符,所以linux 社区的很多人抱怨,不愿意使用.

典型的就是 Andrew Tridgell (Samba 开发服务的创造者) 非常不满.偷偷违反了和 BitKeeper 的协议,反编译 BitKeeper 的源代码,开发了个爬虫,然后爬取信息被人发现了. BitKeeper 公司的领导非常不满意,然后开始发布消息说,(下个版本)不再为Linux 提供免费的服务.

Linus 本人就出面协调(几周或者几个月),但是不管用, 没办法. 估计谈判的过程感觉到了憋屈–“吃人嘴短,拿人手软”

Linus 本人 花了10天的时间Git 出来了,一个月之内,Linux系统的源码已经由Git管理了!
在这里插入图片描述
Git 出来以后毕竟是一个人做的,开始并不好用(刚开始只能用勉强可以用来形容), 还是很多人抱怨,发展了很多年都没有干过其他软件.

直到 2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,从此git 迎来了飞速发展,当下git 已经成为了最流行的版本控制工具

👇 源码资料获取 · 技术与交流 👇

在这里插入图片描述


http://www.ppmy.cn/ops/126947.html

相关文章

python项目实战——下载美女图片

python项目实战——下载美女图片 文章目录 python项目实战——下载美女图片完整代码思路整理实现过程使用xpath语法找图片的链接检查链接是否正确下载图片创建文件夹获取一组图片的链接获取页数 获取目录页的链接 完善代码注意事项 完整代码 import requests import re import…

王道考研视频——操作系统笔记第六章:IO设备管理

操作系统第六章&#xff1a;IO设备管理【有笔记&#xff0c;截图&#xff0c;还有王道课本的概念】&#xff01;&#xff01;&#xff01; 王道考研视频——操作系统笔记&#xff0c;第六章&#xff1a;IO设备管理 0.0 课程白嫖指南_哔哩哔哩_bilibili 有需要markdown格式的准研…

QT--文本框 QLineEdit、qtextedit

在Qt中&#xff0c;文本框&#xff08;QLineEdit 或 QTextEdit&#xff09;和标签&#xff08;QLabel&#xff09;是两种不同的部件&#xff08;widget&#xff09;&#xff0c;它们的主要区别在于用途和功能&#xff1a; QLabel&#xff08;标签&#xff09; 用途&#xff1…

吴伟仁《英国文学史及选读》第一二册课后答案PDF

新经典高等学校英语专业系列教材《英国文学史及选读》根据英国文学历史的顺序结合作品选读编写而成&#xff0c;在历史部分&#xff0c;对英国文学史的每个阶段作了简明扼要的概述&#xff0c;而在作品选读部分则尽可能遴选了文学史上的重要作家和重要作品。教材内容丰富&#…

六、LogicFlow 自定义业务边 Edge

前言 经过前面的文章讲解&#xff0c;目前已经实现了节点拖拽到画布中&#xff0c;并且也实现了节点之间的基础连线&#xff0c;到这里也算是入了门&#xff0c;接下来继续探究新学习新的功能&#xff0c;以满足新的需求&#xff0c;那么这一章就会学习如何更改两节点之间的连…

删除node_modules文件夹

前言 当安装了较多模块后&#xff0c;node_modules目录下的文件会很多&#xff0c;直接删除整个目录会很慢&#xff0c;下面介绍些快速删除node_modules目录的方法。 方法一&#xff1a;使用rimraf模块的命令 在全局安装rimraf模块&#xff0c;然后通过其命令来快速删除node…

Java实现简单的5阶m序列密钥生成

选择5阶本原多项式&#xff1a;x^5 x^2 1,初始值为{1,0,0,1,1}&#xff0c;易得&#xff0c;递推公式为&#xff1a;ak ak-5 ⊕ ak-2 &#xff0c;其中k≥5。于是可以写出下面这段代码&#xff1a; class BitsEncode {public static void main(String[] args) {//初始化数组…

洛谷P2279 [HNOI2003] 消防局的设立(树形dp)

题目链接 https://www.luogu.com.cn/problem/P2279 思路 我们令 d p [ i ] [ s t a t e ] dp[i][state] dp[i][state]表示节点 i i i在 s t a t e state state状态下&#xff0c;消防站的最小数量。 对于dp方程的定义如下&#xff1a; d p [ i ] [ 0 ] dp[i][0] dp[i][0]表…