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