第10章 Git基本操作

之前的实践选取的示例都非常简单,基本上都是增加和修改文本文件,而现实情况要复杂得多,需要应对各种情况:文件删除、文件复制、文件移动、目录的组织、二进制文件、误删文件的恢复,等等。

本章要用一个更为真实的例子:通过对Hello World程序源代码的版本控制,来介绍工作区中其他的一些常用操作。首先我们会删除之前历次实践在版本库中留下的“垃圾”数据,然后再在其中创建一些真实的代码,并对其进行版本控制。

10.1 先来合个影

马上就要和之前实践遗留的数据告别了,告别之前是不是要留个影呢?在Git里,“留影”用的命令叫作tag,更加专业的术语叫作“里程碑”(打tag,或打标签)。“留影”操作如下:


$cd/path/to/my/workspace/demo

$git tag-m"Say bye-bye to all previous practice."old_practice


本章还不打算详细介绍里程碑的奥秘,只要知道里程碑无非也是一个引用,通过记录提交ID(或者创建Tag对象)来为当前版本库的状态进行“留影”。


$ls.git/refs/tags/old_practice

.git/refs/tags/old_practice

$git rev-parse refs/tags/old_practice

41bd4e2cce0f8baa9bb4cdda62927b408c846cd6


留过影之后,可以执行git describe命令将最新提交显示为一个易记的名称。显示的时候会选取离该提交最近的里程碑作为“基础版本号”,后面附加标识距离“基础版本”的数字,以及该提交的SHA1哈希值缩写。因为最新的提交上恰好被打了一个“里程碑”,所以直接显示“里程碑”的名称。这个技术会在后面的示例代码中多次用到。


$git describe

old_practice