《Got Git》学习笔记(一)
《Got Git》学习笔记(一)
最近想对自己的代码和文档进行归档整理,需要一个版本控制系统来进行 处理。自然而然的想到了目前流行的GitHub。
GitHub,是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。
使用GitHub会涉及很多Git的概念和操作,因此还需要对Git有一定程度的了解。虽然之前使用过ClearCase,但两者之间还是有很大的区别,因此在网上找了有关的资料进行学习。这本《Got Git》(中文名为《Git权威指南》,作者蒋鑫,由机械工业出版社华章公司出版)是我找到的最好的一本中文教程,但是由于我现在非常讨厌举着一本大部头来看书,实在太不方便,而且也找不到官方的电子版,只好可耻的下载了盗版电子书。真心希望以后能推出电子版,我一定会入手一本,呵呵。这个系列的文章是我在学习《Got Git》的过程中对书中的一些理解、总结和摘抄,不会对Git做详细的介绍,也不对Git使用的每一个步骤做说明,只作为学习过程记录之用,因此会出现些许不连贯,遇此情况各位只能自行脑补,甚为抱歉。若这系列文章存在版权问题,请联系我,我会立刻删除。若大家想要更深入的学习Git,十分推荐大家购买这本《Got Git》,里边深入分析了各个版本控制系统的优劣,全面细致地介绍了Git的使用,是一本很好的Git教材。
Table of Contents
1 Git简介
Git是一种分布式的版本控制系统,它与传统的版本控制系统CVS、SVN的区别就在于“分布式”上。传统的版本控制系统多为集中式系统,就像我工作上使用的ClearCase。集中式的版本控制系统只有一个工作空间,为主空间,在ClearCase中就是项目的主分支。想要修改文件必须对文件进行检出(checkout),修改之后再检入(checkin),之后系统管理员把我个人分支上修改的文件合入主分支,整个修改过程才能完成。集中式的工作方式存在很多问题,其中一个就是依赖网络。代码修改人员必须能与版本控制服务器连接,才能对文件进行版本控制。例如我回到家里工作,不能连接到公司的版本控制服务器,这种情况下我就无法对文件进行检入和检出,也就没有办法跟踪文件的历史记录,因此也就谈不上版本控制了。分布式的版本控制系统很好的解决了这个问题,在分布式的系统中,每一个代码修改人员本地上都有一个项目的版本库,可以不依赖网络对该版本库进行修改,并且有该版本库的完全权限。本地的版本库会记录你的每一次修改提交,可以跟踪版本库的历史信息,实现了完全本地化的版本控制。当你能连接上主版本库服务器时,你可以把本地的版本库推送到服务器上,实现版本库的同步。Git等分布式的版本控制系统与SVN等集中式版本控制系统还存在很多的差异,想要了解更多的差别请阅读《Got Git》。
2 Git安装
我使用的操作系统为ubuntu 12.04 LTS,因此只介绍这个系统上的安装方式,其他方式请参考书中内容。
- 最简单的方法,^_^
$ sudo apt-get install git
- 可查看git的版本验证是否安装成功
$ git --version git version 1.7.9.5
3 Git初始化
涉及创建版本库,设置git的配置文件,进行第一次提交等操作。
3.1 创建版本库
创建版本库:
- 创建一个工作目录,并初始化
$ cd /my/git/workspace $ mkdir demo $ cd demo $ git init
- git 1.6.5或更新的版本支持直接初始化并创建目录
$ cd /my/git/workspace $ git init demo $ cd demo
此时在demo工作区根目录下有一个名为.git的隐藏文件夹,该文件夹就是该工作区的版本库
$ ls -aF ./ ../ .git/
3.2 配置config文件
有三个层次的配置
- 系统级配置
- 全局级配置
- 版本库级配置
3.2.1 系统级配置
对/etc/gitconfig文件进行配置,该级别的配置可以被所有用户使用, 因此最好不要配置一些涉及用户信息的配置。该配置作用于系统中的所有 版本库。
- 以下配置注册了一些命令的别名:
$ sudo git config --system alias.st status
$ sudo git config --system alias.ci "commit -s"
$ sudo git config --system alias.co checkout
$ sudo git config --system alias.br branch
- 打开/etc/gitconfig文件进行编辑
$ git config -e --system
3.2.2 全局级配置
对用户目录下的.gitconfig文件进行配置,一般用户相关信息可以在 这个文件内配置,该配置只作用于该用户目录下的版本库。 在使用版本库前要在全局配置中设置用户名和邮件地址。
- 配置当前用户的姓名和邮件地址
$ git config --global user.name "your_name" $ git config --global user.email "your_email@example.com"
- 在Git命令输出中开启颜色显示
$ git config --global color.ui true
- 打开~/.gitconfig文件进行编辑
$ git config -e --global
3.2.3 版本库级配置
对版本库中的config(.git/config)文件进行配置。
$ git config x.y.s others
- 打开工作区下的.git/config文件进行编辑
$ git config -e
3.3 第一次提交
此时工作区中还没有文件,我们必须创建一个文件并把它加入到工作区,然后才能对 修改进行提交。
- 创建一个文件
$ echo "HelloWorld!" > welcome.txt
- 把文件加入到工作区
$ git add welcome.txt
- 提交对工作区的修改
$ git commit -c "initialized."
-c参数表示双引号中为此次提交的说明,git强制要求每次提交都必须附有提交说明。
- 若要对未对修改的工作区执行提交,需要加上参数–allow-empty
$ git commit --allow-empty -m "no modified."
- 显示工作区的日志,附加–stat参数可以看到每次提交的文件变更统计
$ git log --pretty=fuller $ git log --stat --pretty=fuller
3.4 备份工作区
使用克隆命令获取demo工作区的一个副本,并命名为另一个工作区
$ cd /my/git/workspace $ git clone demo demo-step-1
Date: 2013-04-14 22:38:57 CST
HTML generated by org-mode 6.33x in emacs 23