2.1、获取Git仓库
提纲:主要学习配置并初始化一个仓库(repository)、开始或停止跟踪(trace)文件、暂存(stage)或提交(commit)更改。
获取Git仓库:
在现有目录中初始化仓库,只需要进入该项目目录并输入:$ git init,该命令创建一个名为 .git的子目录,这个子目录含有初始化的Git仓库中所有的必需文件。
克隆仓库的命令格式是 git clone [url]
。 比如,要克隆 Git 的可链接库 libgit2,可以用下面的命令:
$ git clone https://github.com/libgit2/libgit2 (mylibgit -- 自定义的名字)
此命令会在当前目录下创建一个名为“libgit2”的目录,并在这个目录下初始化一个.git文件夹,从远程仓库拉去下所有数据放入.git文件夹,然后从中读取最新版本的文件的拷贝。
2.2、记录每次更新到仓库
使用Git时文件的生命周期如下:
(1)查看哪些文件处于什么状态,可以用git status命令。
(2)使用git add命令开始跟踪一个文件。
文件出现在Changes not staged for commit这行下面,说明已被跟踪文件的内容发生了变化,但是还没有放到暂存区中,要暂存这次更新,需要运行git add命令。可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。将这个命令理解为“添加内容到下一次提交中”更合适。注意:如果运行了git add之后又作了修订的文件,需要重新运行git add把最新版本重新暂存起来。
(3)使用git diff (--cached)来分析文件差异。
(4)使用git commit -a命令,Git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add步骤。
(5)使用git mv命令对文件改名,例如:git mv file_from file_to ,相当于下面三条命令:
$ mv README.md README
$ git rm README.md
$ git add README
2.3、获取Git仓库
(1)如果提交了若干个更新,可以使用git log命令来回顾提交历史。
git log会自动按提交时间列出所有更新,最近的更新排在最上面,这个命令会列出每个提交的SHA-1校验和,作者的名字和电子邮件地址、提交时间以及提交说明。
git log -p -2 : -p表示用来显示每次提交的内容差异,-2表示仅显示最近两次提交。
git log的常用选项:
限制git log输出的选项:
2.4、远程仓库的使用
(1)使用$ git remote命令来查看已经配置的远程仓库服务器。
$ git remote
origin
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
pb https://github.com/paulboone/ticgit (fetch)
pb https://github.com/paulboone/ticgit (push)
(2)使用git fetch pb[remote-name]拉去pb仓库中有但自己仓库中没有的信息。
(3)运行git pull通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。
(4)git push [remote-name] [branch-name] 当想要将master分支推送到origin服务器时,运行此命令。
$ git push origin master
(5)如果想要重命名引用的名字可以运行git remote rename 修改一个远程仓库的简写名。这会修改远程分支的名字。
$ git remote rename pb paul
$ git remote
origin
paul
(6)移除一个远程仓库,使用命令git remote rm
$ git remote rm paul
$ git remote
origin
2.5、Git 打标签
像其他版本控制系统(VCS)一样,git可以给历史中的某一个提交打上标签,以示重要。
(1)列出标签:查看Git中已有的标签,只需要输入git tag:
$ git tag
v0.1
v1.3
或者git tag -l ‘v1.8.5*’:
$ git tag -l 'v1.8.5*'
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5.1
(2)Git 使用两种主要类型的标签:轻量标签(lightweight)和附注标签(annotated)。一个轻量标签像一个不会改变的分支,只是一个特定提交的引用。然而附注标签是存储在Git数据库中的一个完整对象。
在Git 中创建一个附注标签的方式是在运行tag命令时指定 -a(创建附注标签)选项,-m选项(标定信息)指定存储在标签中的信息。
$ git tag -a v1.4 -m 'my version 1.4'
$ git tag
v0.1
v1.3
v1.4
创建轻量标签,不需要使用-a、-s或-m等选项,只需要提供标签名字,本质上是将提交校验和存储到一个文件中-没有保存任何其他信息。
$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5
v1.4-lw
v1.5
2.6、Git 别名
Git 并不会在输入部分命令时自动推断出想要的命令,如果不想每次都输入完整的Git命令,可以通过git config文件为每一个命令来设置别名,如下,
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
当输入git commit 时,只需要输入git ci。
在执行外部命令,而非Git 自命令,可以在命令前面加入!符号。
至此,Git 第二课结束。