第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),那么我建议您赶紧去买一张彩票。