第4章 Git初始化

4.1 创建版本库及第一次提交

您当前使用的Git是1.5.6版或更高的版本吗?通过如下操作来查看一下您的Git版本:


$git—version

git version 1.7.4


Git是一个活跃的项目,仍在不断地进化之中,不同版本的Git功能不尽相同。本书对Git的介绍涵盖了1.5.6到1.7.4版本,这也是目前Git的主要版本。如果您使用的Git版本低于1.5.6,那么请升级到1.5.6或更高的版本。本书示例使用的是1.7版本的Git,我们会尽可能地指出那些与低版本不兼容的命令及参数。

在开始Git之旅之前,我们需要设置一下Git的配置变量,这是一次性的工作。即这些设置会在全局文件(用户主目录下的.gitconfig)或系统文件(如/etc/gitconfig)中做永久的记录。

(1)告诉Git当前用户的姓名和邮件地址,配置的用户名和邮件地址将在版本库提交时用到。

注意,不要照抄照搬下面的两条命令,而是用您自己的用户名和邮件地址代替这里的用户名和邮件地址,否则您的劳动成果(提交内容)可就要算到我的头上了。


$git config—global user.name "Jiang Xin"

$git config—global user.email jiangxin@ossxp.com


(2)设置一些Git别名,以便可以使用更为简洁的子命令。

例如:输入git ci即相当于git commit,输入git st即相当于git status。

如果拥有系统管理员权限(例如通过执行sudo命令获取管理员权限),希望注册的命令别名能够被所有用户使用,可以执行如下命令:


$sudo git config—system alias.st status

$sudo git config—system alias.ci commit

$sudo git config—system alias.co checkout

$sudo git config—system alias.br branch


也可以运行下面的命令,只在本用户的全局配置中添加Git命令别名:


$git config—global alias.st status

$git config—global alias.ci commit

$git config—global alias.co checkout

$git config—global alias.br branch


(3)在Git命令输出中开启颜色显示。


$git config—global color.ui true


Git的所有操作,包括创建版本库等管理操作用git一个命令即可完成,不像其他版本控制系统(如Subversion),与管理相关的操作要使用另外的命令(如svnadmin)。创建Git版本库,可以直接进入到工作目录中,通过执行git init命令完成版本库的初始化。

下面就从一个空目录开始初始化版本库,将这个版本库命名为“DEMO版本库”,这个DEMO版本库将贯穿本篇始终。为了方便说明,我们使用名为/path/to/my/workspace的目录作为个人的工作区根目录,可以在磁盘中创建该目录并设置正确的权限。

首先建立一个新的工作目录,进入该目录后,执行git init创建版本库。


$cd/path/to/my/workspace

$mkdir demo

$cd demo

$git init

Initialized empty Git repository in/path/to/my/workspace/demo/.git/


实际上,如果Git的版本是1.6.5或更新的版本,可以在git init命令的后面直接输入目录名称,自动完成目录的创建。


$cd/path/to/my/workspace

$git init demo

Initialized empty Git repository in/path/to/my/workspace/demo/.git/

$cd demo


从上面版本库初始化后的输出中可以看到,git init命令在工作区创建了隐藏目录.git。


$ls-aF

./../.git/


这个隐藏的.git目录就是Git版本库(又叫仓库,repository)。

.git版本库所在的目录为/path/to/my/workspace/demo,它被称为工作区,目前工作区除了包含一个隐藏的.git版本库目录外空无一物。

下面为工作区中加点料:在工作区中创建一个文件welcome.txt,内容就是一行"Hello."。


$echo "Hello.">welcome.txt


为了将这个新建立的文件添加到版本库,需要执行下面的命令:


$git add welcome.txt


注意,到这里还没有完。Git和大部分其他版本控制系统一样,都需要再执行一次提交操作,对于Git来说就是执行git commit命令完成提交。在提交过程中需要输入提交说明,这个要求对于Git来说是强制性的,不像其他很多版本控制系统(如CVS和Subversion)那样接受空白的提交说明。当Git提交时,如果不在命令行提供提交说明(使用-m参数),Git会自动打开一个编辑器,要求您在其中输入提交说明,输入完毕后保存并退出。需要说明的是,读者要在一定程度上掌握vim或emacs(Linux下常用的两种编辑器)的编辑技巧,否则保存和退出也会成为问题。

下面进行提交。为了说明方便,使用-m参数直接给出了提交说明。


$git ci-m "initialized."

[master(root-commit)78cde45]initialized.

1 files changed,1 insertions(+),0 deletions(-)

create mode 100644 welcome.txt


从上面的命令及输出中可以看出:

命令git ci实际上相当于git commit,这是因为之前为Git设置了命令别名。

通过-m参数设置提交说明为:"initialized."。

从命令输出的第一行可以看出,此次提交是提交在名为master的分支上,且是该分支的第一个提交(root-commit),提交ID为78cde45[2]

从命令输出的第二行可以看出,此次提交修改了一个文件,包含一行的插入。

从命令输出的第三行可以看出,此次提交创建了新文件welcome.txt。

[1]圣经《约翰福音8:32》。

[2]大家实际操作中看到的ID肯定和这里写的不一样,具体原因会在后面的6.1节中予以介绍。如果碰巧您的操作也显示出了同样的ID(78cde45),那么我建议您赶紧去买一张彩票。