一、本地版本库创建
任务描述
本地
Git
操作三部曲是“修改-添加-提交”,即先要在本地仓库进行添加、删除或编辑等修改,然后将本地所做的修改添加至暂存区。添加至暂存区的这些本地修改,并未提交到本地仓库,需要执行提交命令才能将暂存区中的修改,添加到本地仓库。使用
Git
最基本的是,要先创建一个本地版本库,然后才能在本地修改、保存及提交文件。现在,让我们从创建一个本地版本库开始!本关任务:现在你要开始使用
Git
进行项目的版本控制了,请在本地创建一个版本库。相关知识
Linux基础操作
在现今的软件开发中,
Linux
系统及其命令行的使用,已经是一项必不可少的技能。虽然有其他基于Git
的图形化软件,但是Git
只能通过命令行进行操作。因此,掌握一些基础的Linux
操作命令很有必要。创建某个目录
有时我们需要创建目录,这时就需要使用命令
mkdir
。通过mkdir
,可以在指定的目录下创建文件夹,其用法如下:
- 在当前目录下,创建目录
helloGit
:mkdir helloGit
- 在
/home
目录下,创建目录helloGit
:mkdir /home/helloGit
mkdir
的其他高级用法请参考其他Linux
资料。创建文件
创建文件可以使用命令
touch
,其用法如下:
- 在当前目录下,创建文件
helloGit.txt
:touch helloGit.txt
- 在
/home
目录下,创建文件helloGit.txt
:touch /home/helloGit.txt
进入目录
进入某个目录,需要用到命令
cd
,其用法如下:
- 进入
helloGit
目录:cd helloGit
这样的用法默认了
helloGit
目录,存在于当前目录下。也可以在cd
命令中,直接指定进入当前目录:cd ./helloGit
进入
/home/helloGit
目录:cd /home/helloGit
返回到上一级目录: 在
Linux
系统下,上一级目录可以用‘..’代替,如:
#进入上一级目录
cd ..
#进入上一级目录的再上一级目录
cd ../../
#进入上一级目录下的helloGit
cd ../helloGit
使用Git前的准备
安装
Git
可以使用源码安装,具体的安装过程请参考Git
官网教程或者Github
上Git
仓库的用户指南。 但对于初学用户,还是建议大家直接安装。
Linux
下安装:
#Fedora下安装
yum install git-core
#Ubuntu等Debian类体系结构系统下
apt-get install git
Mac
上安装: 在Mac
上安装Git
有两种方式。可以使用图形化的Git
安装工具,网址为图形化Git工具安装地址;另一种是通过MacPorts 安装。如果已经装好了MacPorts
,请用下面的命令安装Git
:sudo port install git-core +svn +doc +bash_completion +gitweb
Windows
下安装: 在Windows
上安装Git
,可以使用msysGit
的项目提供的安装包,可以到GitHub
的页面上,下载exe
安装文件并运行:http://msysgit.github.com/
完成安装之后,就可以使用命令行的git
工具了。建议大家最好使用Unix
风格的shell
来运行Git
。另外,Linux
也有其他图形化的Git
工具,如Tortoisegit
。不过,还是建议大家直接使用shell
来运行Git
。Git配置
由于
Git
是一个分布式的版本控制系统,所以当利用它进行分工协作时,必须区分不同的机器。这一点可以通过配置机器的名字和邮箱完成。Git
初始使用时,也会提示进行配置。配置命令如下:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
在实际的使用过程中,可以将
“Your Name”
、“email@example”
替换为自己实际的名字和邮箱。如何创建一个本地版本库
首先,我们需要创建一个目录,做为我们的本地版本库,然后使用
git init
命令,将其初始化为一个本地版本库,如下:
#在/home目录下,创建repo目录
mkdir /home/repo
#进入repo目录
cd /home/repo
#将repo初始化为一个本地版本库
git init
通过上述命令,即可在
/home
目录下,创建repo
目录,并将其初始化为一个版本库。编程要求
现在我们已经学习了
Git
的原理(具体请阅读背景知识部分内容)、安装及配置,也学到了一些必备的Linux
操作,我们已经为你在Linux
系统下,安装好了Git
,并进行了配置,这为你省去了不少麻烦。 本关的编程任务是,补全右侧代码片段中Begin
至End
中间的脚本,通过执行你所编写的脚本,来完成创建本地版本库的任务。具体要求如下:
- 在当前目录下,创建一个名为
gitTraining
的目录;- 将
gitTraining
目录,初始化为一个本地版本库。
#创建gitTraining文件夹
mkdir gitTraining
#进入gitTraining文件夹
cd gitTraining
#请添加初始化本地Git仓库的命令
#********** Begin **********#
git init
#********** End **********#
二、添加修改到暂存区域
任务描述
现在我们已经有了一个本地仓库,但是现在它里面空空如也。那么我们到底要怎么去保存我们的修改呢? 本关任务:使用
Git
命令将本地文件添加到暂存区中。相关知识
如何将修改保存到暂存区
本地版本库就相当于一个存放在本地的仓库,里面记录了我们本地文件的各种版本及不同版本之间的差异。当我们添加、删除或者修改了文件之后,我们必须将修改添加至工作区以暂时保存(
Git
的工作原理请认真阅读背景知识部分)。添加修改,并保存至工作区,需要用到
git add
命令,git add
命令的使用方式如下所示:#添加所有修改 git add . #添加hello.txt文件 git add hello.txt
如上所示,当需要添加所有文件至工作区时,使用
git add .
,如果想添加指定文件,只需要像示例中添加hello.txt
一样,将文件名做为参数名,传给git add
即可。虽然本关考察了添加修改到暂存区的操作,但是如果想得心应手地使用
Git
还不够。这里,必须要向你介绍另外两个很重要的命令。查看工作区状态
当你创建完
helloGit.txt
,而且没有将其添加到暂存区域时,如果使用git status
命令,你会得到类似于下面的输出(中文):或者这种(英文):
这是什么?这是提示你工作区有被修改的文件,未提交至暂存区。 当你执行完
git add
之后,会得到类似于下面的输出:或者这种:
这是在提醒你,暂存区有哪些内容需要提交到本地仓库。
其实
git status
命令用来查看当前工作区的状态,即有哪些已经修改,还尚未提交到暂存区的文件。在实际的开发过程中,面对复杂的程序文件,你经常需要查看一下,自己对哪些文件做了修改,此时git status
命令就很有用了。你可以在命令行界面下,自己去体验一下。撤销修改
本关只考察了添加内容,但是如果你不小心把不想添加的东西添加到暂存区,或者想丢弃已经添加的内容,这个时候你该怎么办呢?不用着急,这个时候
git checkout
命令就可以大显身手了。
checkout
命令用法如下:git checkout helloGit.txt
这样就能把已经添加到本地的
helloGit.txt
从暂存区中移除。
#创建gitTraining文件夹
mkdir gitTraining
#进入gitTraining文件夹
cd gitTraining
#请添加初始化本地Git仓库的命令
#********** Begin ********init**#
git init
#********** End **********#
#创建helloGit.txt文件
touch helloGit.txt
#请添加提交helloGit.txt到暂存区的命令
#********** Begin **********#
git add helloGit.txt
git status
#********** End **********#
三、提交修改到本地仓库
任务描述
本地
Git
操作三部曲,是“修改-添加-提交”。现在你已经完成了前两个,相信你也迫不及待地想进行第三个操作了:将本地修改提交到本地仓库中去。本关任务:将暂存区中的修改提交到本地仓库中。
相关知识
如何将修改提交到本地仓库
将修改添加到暂存区,只是将你的工作暂时保存,并没有添加到本地的仓库中。这个过程可以类比写文件,将修改添加至暂存区,就相当于把内容先放入缓存区。因此,我们必须将工作区的内容提交到本地版本库去,才算是真正地保存了修改。
提交修改到本地仓库,使用命令
git commit
,其使用方式如下所示:git commit -m "示例提交"
-m
参数后面跟的是本次提交的具体内容,用来说明你这次的提交,主要是做了哪些修改,这个说明内容是必须的。解析commit的输出结果
在执行完
git commit
命令之后,会得到类似于下面的返回结果:其中:
“添加helloGit.txt”
为“-m”
的参数,即执行的命令为git commit -m "添加helloGit.txt"
;“1 file changed, 0 insertions(+), 0 deletions(-)”
提示改动信息;“37302ce”
这个字符串则是本次提交的Id
,commit Id
唯一对应一次提交。令人惊喜的git log和git status
当执行完
git commit
后,如果你试着执行以下git log
你可能会得到如下的输出:其中:
“commit 37302ce99137cf30fabc14784d23ea63cadb928b”
中的后面这一串字符就是完整的commit id
;“Author”
就是这次提交的作者,它就是我们在git config
中配置的user.name
;- 最后输出的
“添加helloGit.txt”
,是我们在提交时添加的信息。如果有多次提交即
commit
,在执行git log
时,会输出每一次的提交的具体信息。这样的话,什么时候(Date
)由什么人(Author
)提交了什么内容(“添加helloGit.txt
”)就一目了然了。
#创建gitTraining文件夹
mkdir gitTraining
#进入gitTraining文件夹
cd gitTraining
#请添加初始化本地Git仓库的命令
#********** Begin **********#
git init
#********** End **********#
#创建helloGit.txt文件
touch helloGit.txt
#请添加提交helloGit.txt文件到暂存区的命令
#********** Begin **********#
git add helloGit.txt
git status
#********** End **********#
#请添加提交helloGit.txt至本地仓库的命令
#********** Begin **********#
git commit -m "Add helloGit.txt"
git log
#********** End **********#