本文共 2943 字,大约阅读时间需要 9 分钟。
由发表在
版本控制是指能够记录、管理文件或文件集合的内容及其随着时间推移发生的变化的系统。如果你曾经遇到过这样的场景:
如果有这样一个软件系统,能够帮助我们记录每一个文件的每一次改动记录,如果我们误删了重要的信息或者需要找回很久以前的某一段内容,能够很容易的得到以前某一个时刻的内容,并且还能够支持大家一起来编辑协作,即使出现冲突也能够在工作过程中很快得到通知(而不是最后大家都写完了,得到了大量的冲突),那可真是一件美好的事情。
版本控制系统就是为了解决这些问题而诞生的,最早开发版本控制系统的程序员,他们将文件的每一次改动记录都存储在计算机本地,如下图所描述:
对于该版本控制系统的用户来说,他永远只会看到版本控制库中某一个版本对应的文件内容。如果他需要找回以前某个版本的内容,只需要在版本控制库中把对应的版本内容给取出来就可以了,就像坐上了可以穿越的时光机一样,再也不用为某个文件被删除之类的问题而提心吊胆了。
解决了文件内容版本控制问题以后,人们下一个需要面对的问题是与他人协作。为了告别使用Email、U盘等介质进行传输的古老协作模式,一种“集中式版本控制系统”被开发出来,它的中心思想是把版本控制库移动到一台每一个人都能访问到的“中央服务器”上,每一个协作者只是在自己的计算机上维护某一个版本的内容,一旦修改完成后将新的内容提交到“中央服务器”上形成新的版本,这种模式可以用下图来表示:
在这种集中式版本控制系统的管理下,每一个人只需要连接上“中央服务器”就可以得到任意版本的文件内容并在本地计算机上进行修改,修改完成后结果可以被提交到“中央服务器”上并形成新的版本。(简称SVN)就是一种典型的集中式版本控制系统,直到现在它仍然流行在软件开发世界中。
集中式版本控制系统解决了多人协作的问题,但它仍然有一系列缺陷:
在分布式版本控制系统中,每一台本地计算机上保存的并不仅仅只是某一个版本对应的文件内容,而是包含整个版本控制库的所有数据内容:
这样即时服务器遭遇宕机或者数据丢失,版本控制库的数据还是能够从每一台本地计算机中获得。同时本地计算机不必再需要在联网的状态下进行工作,当你在飞机上你完全可以继续工作,将修改提交到本地的版本控制库中,当能够访问服务器后再将修改进行同步。
另一方面在这种体系结构下,“中央服务器”和“本地计算机”其实在一定程度上是对等的,因为任意一台本地计算机都具有完全替代服务器的能力,而服务器更多的作用则是作为一个协作的“中转站”。在现实情况下,大多数服务器中其实是不会包含“文件”的,仅仅是一个版本控制库来帮助项目中的每一个人进行协作。
Linux内核是一个开源软件项目,开发者遍布世界各地。从1991年诞生,直到2002年软件的演化都是通过patch以及归档文件来完成的。随着项目规模越来越庞大、功能特性越来越多并且很多功能都在同时进行开发,人工管理整个项目的演化过程已经越来越难,所以从2002年开始整个项目采用了一个叫BitKeeper的分布式版本控制系统。到2005年,由于某些原因Linux内核社区和开发BitKeeper软件的商业公司关系破裂,社区不再能够免费使用BitKeeper作为Linux内核项目的版本控制系统。Linux的创始人Linus Torvalds于是自己开始编写一个分布式版本控制系统,取名为Git。一个月后,Linux内核项目的所有源码都通过Git管理起来了!不仅如此,Git已经成为当前世界上最流行的分布式版本控制系统。2008年Github网站上线,为开源项目提供免费的Git代码托管功能,现在已经有数百万的项目在Github上使用Git托管。
在Windows上安装Git需要使用msysGit项目提供的安装包,可以到GitHub的页面上下载exe安装文件并运行:
http://msysgit.github.io/
完成安装之后,就可以使用Windows Command Line来运行git了,但是我们更加推荐使用msysGit提供的Unix风格的shell来运行Git,在Unix风格的shell中,可以使用更多复杂的命令而且不必考虑Windows下空格、路径分隔符等问题。另外msysGit还提供了一个图形界面的 Git 项目管理工具。
使用Unix风格Shell的方法:
如果要在Linux上安装预编译好的Git二进制安装包,可以直接用系统提供的包管理工具。在Fedora上用yum
安装:
$ yum install git-core
在Ubuntu这类Debian体系的操作系统上,可以使用apt-get
安装:
$ apt-get install git
Mac在安装了命令行工具(Command Line Tools)后系统会自带Git。当然也可以通过和等包管理工具来安装:
brew install git
Mac下强烈推荐使用HomeBrew来管理各类开发软件
Git安装成功后,可以在命令行下输入git --version
,如果出现Git的版本号信息则说明Git安装成功
开始使用Git的第一件事情是设置你的名字和Email地址。因为Git在记录每一次文件变化时都会使用这些信息,在与他人协作时个人信息也是非常重要的。可以通过命令行进行配置:
$ git config --global user.name "John Smith" $ git config --global user.email "johnsmith@gmail.com"
其中user.name
和user.email
后的两个字符串内容,应该替换为你自己的个人信息。--global
表示这个配置是一个系统全局配置,也就是说在当前系统中任何地方使用Git都会采用刚才你输入的名字和Email地址。
更多文章请访问