Git 学习笔记 | Git 的简介与历史

Git 学习笔记 | Git 的简介与历史

  • [Git 学习笔记 | Git 的简介与历史](#Git 学习笔记 | Git 的简介与历史)
    • [Git 简介](#Git 简介)
    • [Git 历史](#Git 历史)

Git 学习笔记 | Git 的简介与历史

Git 简介

Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS),分为两种类型的仓库:本地仓库和远程仓库。

工作流程如下:

  1. 从远程仓库中克隆或拉取代码到本地仓库(clone/pull)
  2. 从本地进行代码修改
  3. 在提交前先将代码提交到暂存区
  4. 提交到本地仓库。本地仓库中保存修改的各个历史版本
  5. 修改完成后,需要和团队成员共享代码时,将代码push到远程仓库

所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

不会因为服务器损坏或者网络问题,造成不能工作的情况。

Git 流程图:

Git 是目前世界上最先进的分布式版本控制系统。

Git 历史

同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。

很多人都知道,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 已经成为了最流行的版本控制工具。

相关推荐
数智工坊5 分钟前
周志华《Machine Learning》学习笔记--第十一章--特征学习与稀疏学习
笔记·学习·机器学习
摇滚侠7 分钟前
git ignore 忽略 .idea 目录 全新项目(尚未提交过 .idea).idea 已经被 Git 跟踪(已提交过)
java·git·intellij-idea
喵叔哟9 分钟前
第2周学习笔记
笔记·python·学习·langchain
ZC跨境爬虫13 分钟前
跟着 MDN 学JavaScript day_6:JavaScript 中的基础数学——数字与运算符
开发语言·前端·javascript·学习·ecmascript
MartinYeung515 分钟前
[论文学习]网路知识产权面临风险:防止大型语言模型未经授权即时检索
人工智能·学习·语言模型
数智工坊1 小时前
周志华《Machine Learning》学习笔记--第十二章--计算学习理论
笔记·学习·机器学习
之歆4 小时前
Day05_Git 版本控制完全指南:从入门到精通的专业实践
git
我叫唧唧波8 小时前
Python+AI 全栈学习笔记
人工智能·python·学习
城北徐宫9 小时前
Linux信号深度解剖:5种产生、3张表、4次切换
linux·c++·学习
Python私教9 小时前
Git 撤销与回退避坑指南:reset / revert / restore 到底用哪个(2026 实战)
git