这个是继 Redis
, MySQL
之后的第三个系列了。
然而,前两个系列还都没有写完。
so
, Redis
和 MySQL
pause.
只是暂停~,我会在未来的三年内,将它们全部完成。
叮~
git
!
说到 git
,我们先了解一个人, 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
),并创建一个对应的索引文件,指明 object
在 packfile
中的偏移值。新创建的对象仍然作为单独文件存在。 repacks
操作非常费时间, git
会在空闲时间自动做此操作。也可用命令 git gc
来直接启动 repack
。 packfile
与索引文件都用 SHA-1 作为校验和并作为文件名。 git fsck
命令做校验和的完整性验证。
Git 服务器典型的 TCP 监听端口为 9418
。
git
和其他版本控制系统(如 CVS
)有不小的差别, git
本身关心文件的整体性是否有改变,但多数的版本控制系统如 CVS
或 Subversion
系统则在乎文件内容的差异。 git
拒绝保持每个文件的版本修订关系。因此查看一个文件的历史需要遍历各个 history
快照; git
隐式处理文件更名,即同名文件默认为其前身,如果没有同名文件则在前一个版本中搜索具有类似内容的文件.
以上简要介绍,先到这里,我们来看下, git
这一系列文章的目录。
# 推荐书籍
git-doc
廖雪峰 Git 教程
一个不错的 Github 仓库: 游戏中学 git
# 最后
期望与你一起遇见更好的自己