GitHub入门与实践(二)

第2章 Git的导入

Git仓库管理功能是GitHub的核心。因此,使用GitHub之前必须先掌握Git的相关知识,同时本地的设备还要安装Git的环境。本章我们将为大家讲解使用Git所需的知识及各种设置。

2.1 诞生背景

Git属于分散型版本管理系统,是为版本管理而设计的软件。

Linux的创始人的Linus Torvalds在2005年开发了Git的原型程序。当时,由于在Linux内核开发中使用的既有版本管理系统的开发方许可证发生了变更,为了更换新的版本管理系统,Torvalds开发了Git。

Linux内核的更新速度在全世界也算有首屈一指。因此,势必需要一个功能强、性能高的版本管理系统来提高开发速度。

在当时的开源环境下,虽然已经有数款版本管理软件被开发出来,但功能和性能都差强人意。加之Git是由Linus Torvalds亲自着手开发的,可以说在功能与性能方面无可挑剔。程序员们愿意接受Git,很大程度上取决于这个背景。

笔者在从Subversion改用Git时,也对其强大的功能和性能感到震惊。Git功能多到夸张,让人觉得至今都没能彻底掌握它。同时它大幅削减了笔者花在版本管理系统上的时间,现在如果没有Git,软件开发恐怕会是一件非常痛苦的事情。

在发布之初,Git由于其艰涩难懂,只有部分黑客愿意使用。但随着众多开发者的共同努力,现在它已被全世界的程序员们所采用。

2.2 什么是版本管理

版本管理就是管理更新的历史记录。它为我们提供了一些在软件开发过程中必不可少的功能,例如记录一款软件添加或更改源代码的过程,回滚到特定阶段,恢复误删除的文件等。

在Git出现以前,人们普遍采用Subversion等集中型版本管理系统,而现在Git已经成为了主流。由于GitHub的普及,想必世界上使用Git的人会越来越多。因此要学习版本管理的各位,建议您选择Git。

集中型与分散型

刚才我们提到版本管理系统分为Subversion这类集中型的与Git这类分散型的,下面就为各位简单说明一下二者的不同点。

集中型

以Subversion为代表的集中型,会如图2.1所示将仓库集中存放在服务器之中,所以只存在一个仓库。这就是为什么这种版本管理系统会被称作集中型。

集中型将所有数据集中存放在服务器当中,有便于管理的优点。但是一旦开发者所处的环境不能连接服务器,就无法获取最新的源代码,开发也就几乎无法进行。服务器宕机时也是同样的道理,而且万一服务器故障导致数据消失,恐怕开发者就再也见不到最新的源代码了。

分散型

图2.2是以Git为代表的分散型的示意图。如图中所示,GitHub将仓库Fork给了每一个用户。Fork就是将GitHub的某个特定仓库复制到自己的账户下。Fork出的仓库与原仓库是两个不同的仓库,开发者可以随意编辑。

如图所示,分散型拥有多个仓库,相对而言稍显复杂。不过,由于本地的开发环境中就有仓库,所以开发者不必连接远程仓库就可以进行开发。

图中只显示了一般地使用流程。实际上,所有仓库之间都可以进行push和pull。即便不通过GitHub,开发者A也可以直接向开发者B的仓库进行push或pull。因此在使用前如果不事先指定规范,初学者往往会搞不清最新的源代码保存在哪里,导致开发失去控制。不过不用担心,只要各位随着本书的讲解亲自动手尝试,想掌握要领并不是一件难事。

集中型与分散型哪个更好

要说集中型与分散型哪个更好,其实双方都各有优缺点,需要看具体情况而定。不过,随着Git与GitHub的普及,今后使用分散型的开发者将会占绝大多数。只要规则制定得当,分散型同样能像集中型那样进行管理。

有些人在学习版本管理的相关知识时,认为该从相对简单的集中型入手,在遵循渐进学习分散型。但笔者认为,今后用到集中型的机会很少,所以不必特地绕这个弯路。

同样,建议想给团队导入版本管理系统的读者选择GitHub与Git。如果软件开发进行到一半再从集中型转为分散型,不但需要支付高额的费用,还要让开发者花费大量的精力与金钱去重新学习。考虑到今后的各种机遇与挑战,从一开始就选择分散型,必定是各位成功路上的关键一步。

只要脑中掌握了多个仓库并存的概念,学习分散型并不是什么难事。而且对于刚刚接触这方面知识的人来说,由于没有先入为主的干扰,应该很容易接受这一概念。

2.3 安装

接下来就让我们在本地环境中实际安装Git,进行各种设置。

Mac与Linux

最近的Mac中都预装了Git。而各版本的Linux中也都以软件包(Package)的形式提供给用户了,所以各位可以直接使用。关于这两个环境特有的详细安装方法,由于篇幅关系恕不赘述。

Windows

在Windows环境中,最简单快捷的方法是使用msysGit。请按照Downloads的向导下载安装包。本书使用的版本是Git-1.8.4-preview20130916.exe。

安装包下载完毕后,只要双击运行,按照向导一步步安装即可。下面我们对安装时的设定进行讲解。

组件的选择

在图2.3的页面中选择需要的组件。由于所有必要组件都已默认勾选,大可直接进入下一步。

设置环境变量

在图2.4的页面中,可以设置调用Git的环境变量。本书的讲解只会用到msysGit中附属的Git Bash命令提示符,所以请选择最上面的User Git Bash only,然后进行下一步。

换行符的处理

在图2.5所示的页面中,选择换行符的相关设置。

GitHub中公开的代码大部分都是以Mac或Linux中的LF(Line Feed)换行。然而,由于Windows中是以CRLF(Carriage Return Line Feed)换行的。所以在非对应的编辑器中将不能正常显示。

Git可以通过设置自动转换这些换行符。使用Windows环境的各位,请选择推荐的“Checkout

Windows-style,commit Unix-style line endings”选项。换行符在签出时会自动转换为CRLF,在提交时则会自动LF。

各位请注意以上这几点,配合当前使用的环境进行安装。

Git Bash

顺利安装好msysGit之后,Git Bash会作为一个应用程序添加进系统,接下来请启动它。双击之后,会弹出一个名为Git Bash的命令提示符(图2.6),它附属于msysGit。如果各位是按照本书中介绍的流程进行安装,那么git命令就只能在Git Bash中使用,在Windows附属的命令提示符中则无法运行。

从名字中带有Bash就不难猜到,Git Bash中照搬了许多Bash命令,习惯Linux的人用起来会感觉比Windows命令提示符更得心应手。借这个机会,不妨也熟悉一下Windows的CLI(Command Line Interface,命令行界面)操作。

本书所用的环境

本书中的示范操作,都是在OS X 10.9.1 上使用Git 1.8.5.2 进行。其他大部分环境也都提供了1.8.x或1.7.x版本的软件包,所以并不强求末尾的小版本号一致。不过还是建议各位尽量安装最新版的Git。

2.4 初始设置

下面我们对本地计算机里安装的Git进行设置。

设置姓名和邮箱地址

首先来设置使用Git时的姓名和邮箱地址。名字请用英文输入。

$ git config --global user.name "Firstname Lastname"
$ git config --global user.email "your_email@example.com"

这个命令,会在“~/.gitconfig”中以如下形式输出设置文件。

[user]
    email = your_email@example.com
    name = Firstname Lastname

想更改这些信息时,可以直接编辑这个设置文件。这里设置的姓名和邮箱地址会用在Git的提交日志中。由于在GitHub上公开仓库时,这里的姓名和邮箱地址也会随着提交日志一同被公开,所以请不要使用不便公开的隐私信息。

在GitHub上公开代码后,前来参考的程序员可能来自世界任何地方,所以请不要使用汉字,尽量用英文进行描述。当然,如果你不想使用真名,完全可以使用网络上昵称。

提高命令输入的可读性

随便一体,将color.ui设置为auto可以让命令的输出拥有更高的可读性。

$ git config --global color.ui auto

“~/.gitconfig”中会增加下面一行。

[color]
    ui = auto

这样一来,各种命令的输出就会变得更容易分辨。

2.5 小结

本章中,我们从Git诞生的背景说起,讲了版本管理系统中集中型和分散型的相关知识。然后还实际安装了Git,并进行了初始化设置。

如果您是一名开发者,今后使用Git的情况必然越来越多。请务必认真进行初始设置。

发表评论

电子邮件地址不会被公开。