git工具-简介

本文章是git工具系列的第一章,用于对git工具的简单介绍!


关于版本控制

版本控制是一种用于记录随时间文件或文件集更改以便于能够在后续工作中重调指定版本的系统。

git工具-简介

工作原理是在硬盘上保存补丁集(补丁是指文件修订前后的变化),通过应用所有的补丁可以重新计算出各个版本的文件内容。

git工具-简介
git工具-简介

这类系统中,像Git、Mercurial、Bazaar以及Darcs等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。藉此,便可以在同一个项目中分别和不同工作小组的人相互协作。也可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。

git名字的由来

The name “git” was given by Linus Torvalds when he wrote the veryfirst 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.
  • stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.
  • “global information tracker”: you’re in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.
  • “gddmn idiotic truckload of sh*t”: when it breaks

git这个词英文中是“饭桶、烂人”的意思,而且linus喜欢使用自己的名字命名项目,但他也自认为自己是一个自负的人,所以选择了这个名字,ε=(´ο`*)))唉,大师谦虚至极。

对git之父linus torvalds的采访1

为何你创造了git?

我一直很不喜欢做原始代码管理,我觉得那是电脑领域中最无聊的一件事情,我非常讨厌原始代码管理。不过BitKeeper(简称BK)出现后,改变了我对原始代码控制的想法。
BK做对了大部分的事情,它在本机端有一份完整的存储库,而且采用分布式的做法非常了不起。分布式原始代码控制解决了原始代码控制常碰到的问题----谁有资格改变原始代码。
借助提供储存库给每个使用者,BK解决了这个问题。不过BK也有些缺陷,比如说某些技术决策引起了些问题,但最大的缺点在于BK不是开发原始代码,所以很多人不愿意使用。有几位我们重要维护人员因为BK可以免费用在开源专案上而使用它,但BK始终没有普遍的被使用,尽管它帮助了Linux核心的开发,BK仍有不足之处。Andrew Tridgell违反BK的使用原则,对BK开始进行****。我花了几个礼拜或是(或是几个月),居中协调Tridgell跟Larry McVoy,不过显然没有多大的帮助。从那一刻起我决定放弃使用BK,但是我也不想回到以前没有BK的日子。在那时虽然也有一些原始码控制软体想采用分散式的做法,但都不成气候,它们离我效能表现的要求还差一大截,同时我担心原始码完整性及作业流程上的问题,索性决定自己写一个原始码控制系统。

你是怎么做到这件事情的?

呵呵,其实你可以去Git原始码的储存库看它如何逐渐成形。我大概花一天让Git能达到自己管理自己的程度(self-hosting),之后我就开始用Git跟Git提交程式码了。我大部分的工作都在白天完成,不过也有几天工作到深夜。我觉得最有趣的地方在看到Git如何快速地成形。在Git树中的第一次提交并没有写很多程式,但是已经实作出提交程式码的基本功能。写Git并不会很难,比较难的是思考如何Git组织档案的方式。我想强调,Git从无到有大概花了我十天(包含我第一次用Git提交核心程式码),而且我也不是焚膏继晷的完成Git。这都取决对Git的基本概念是否很清楚,早在着手写Git前,我已经看到其他原始码控制系统的缺陷。我只是不想重蹈覆辙罢了。

代码托管服务

参考