这个是继 Redis , MySQL 之后的第三个系列了。
然而,前两个系列还都没有写完。
so , RedisMySQL pause.

只是暂停~,我会在未来的三年内,将它们全部完成。

叮~

git

说到 git ,我们先了解一个人, linus Torvalds (林纳斯・托瓦兹)

linus·Torvalds

林纳斯・托瓦兹 是当今世界最著名的电脑程序员、黑客之一。他是 linux 内核的最早作者,随后发起了这个开源项目,担任 linux 内核的首要架构师和项目协调者。并于 2005 年 7 月 11 日,发布了仅用 10 天时间开发出的最早版本的 git 0.99。到今天 (2020 年 7 月 13 日),最新的版本号是 2.27. 这个系列就以该版本进行分享。

关于更多内容,查看这里 -> 林纳斯・托瓦兹

# git

2002 年开始,林纳斯・托瓦斯 决定使用 BitKeeper 作为主要的版本控制系统来维护代码。但是社区中很多人认为,应该使用开源的版本控制软件来维护代码 林纳斯・托瓦斯也考虑使用 monotone ,但是 林纳斯・托瓦斯 嫌弃其性能不佳。在 2005 年,林纳斯决定自行开发一套版本控制系统。

为什么称为 git 呢?

git 在英氏俚语中表示 不愉快的人。

下面是 林纳斯・托瓦兹 对 git 的描述

The name “git” was given by Linus Torvalds when he wrote the very first version. He described the tool as “the stupid content tracker” and the name as (depending on your way):
random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of “get” may or may not be relevant.
“global information tracker”: you’re in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.
stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.

林纳斯・托瓦兹在编写第一个版本时就使用了 “git” 这个名称。 他将工具描述为 “愚蠢的内容跟踪器”,并将其描述为(取决于您的方式):

  • 可以发音念出的随机三个字母组合,而且并未被实际用在任何 UNIX 指令上。它是 “get” 的错误发音,这点可能相关也可能无关。
  • “全局的信息跟踪器”:您的心情不错,对你而言它也确实说得通。天使唱歌,房间突然充满光明。( Global Information tracker )
  • 愚蠢的。鄙视和卑鄙的。简单。从俚语字典中选择。

# git 的实现原理

git 更像是一个文件系统,直接从本机上获取数据,不用连接服务端,每个开发者都可有全部开发历史的本地副本, changes 从这种本地 repository 复制给其他开发者。这些 changes 作为新增的开发分支被导入,可以与本地开发分支合并。

而且,分支是轻量的,一个分支是对一个 commit 的引用。

git 使用 C 语言进行开发的,以追求更高的性能。 git 自动完成了垃圾回收,也可以通过 git gc --prune

git 存储每个新创建的 object 作为一个单独文件。为了压缩存储空间占用, packs 操作把很多文件(启发式类似名字的文件往往具有类似内容)使用差分压缩入一个文件中( packfile ),并创建一个对应的索引文件,指明 objectpackfile 中的偏移值。新创建的对象仍然作为单独文件存在。 repacks 操作非常费时间, git 会在空闲时间自动做此操作。也可用命令 git gc 来直接启动 repackpackfile 与索引文件都用 SHA-1 作为校验和并作为文件名。 git fsck 命令做校验和的完整性验证。

Git 服务器典型的 TCP 监听端口为 9418

git 和其他版本控制系统(如 CVS )有不小的差别, git 本身关心文件的整体性是否有改变,但多数的版本控制系统如 CVSSubversion 系统则在乎文件内容的差异。 git 拒绝保持每个文件的版本修订关系。因此查看一个文件的历史需要遍历各个 history 快照; git 隐式处理文件更名,即同名文件默认为其前身,如果没有同名文件则在前一个版本中搜索具有类似内容的文件.

以上简要介绍,先到这里,我们来看下, git 这一系列文章的目录。

# 推荐书籍

git-doc
廖雪峰 Git 教程

一个不错的 Github 仓库: 游戏中学 git

# 最后

期望与你一起遇见更好的自己

期望与你一起遇见更好的自己

更新于 阅读次数

请我喝[咖啡]~( ̄▽ ̄)~*

方小白 微信支付

微信支付

方小白 支付宝

支付宝

方小白 numberpay

numberpay