第 2 章 基本技巧
与其一头扎进Git命令的海洋中,不如来点基本的例子试试手。它们简单而且实用。实际上,在开始使用Git的头几个月,我所用的从来没超出本章介绍的内容。
保存状态
要不来点猛的?在做之前,先为当前目录所有文件做个快照,使用:
$ git init $ git add . $ git commit -m "My first backup"
现在如果你的编辑乱了套,恢复之前的版本可以使用:
$ git reset --hard
再次保存状态:
$ git commit -a -m "Another backup"
撤销
在法庭上,事件可以从法庭记录里敲出来。同样,你可以检出特定提交以撤销。
$ git commit -a $ git revert 1b6d
讲撤销给定哈希值的提交。本撤销被记录为一个新的提交,你可以通过运行 git log 来确认这一点。
下载文件
得到一个由Git管理的项目的拷贝,则键入:
$ git clone git://server/path/to/files
例如,得到我用来创建该站的所有文件:
$ git clone git://git.or.cz/gitmagic.git
我们很快会对 clone 命令谈的很多。
到最新
如果你已经使用 git clone 命令得到了一个项目的一份拷贝,你可以更新到最新版, 通过:
$ git pull
快速发布
假设你写了一个脚本,想和他人分享。你可以只告诉他们从你的计算机下载,但如果此 时你正在改进你的脚本,或加入了试验性质的改动,他们下载了你的脚本,他们可能因 此陷入困境。当然,这就是发布周期存在的原因。开发人员可能频繁进行项目修改,但 他们只在他们觉得代码可以见人的时候才择时发布。
用Git来完成这项,需要进入你的脚本所在目录:
$ git init $ git add . $ git commit -m "First release"
然后告诉你的用户去运行:
$ git clone your.computer:/path/to/script
来下载你的脚本。这要假定他们有ssh访问权限。如果没有,需要运行 git daemon 并 告诉你的用户去运行:
$ git clone git://your.computer/path/to/script
从现在开始,每次你的脚本准备好发布时,就运行:
$ git commit -a -m "Next release"
而你的用户则可以进入包含你脚本的目录,并键入下列命令,来更新他们的版本:
$ git pull
你的用户永远也不会取到你不想让他们看到的脚本版本。显然这个技巧对所有代码库都 适用,而不仅仅局限于脚本。
练习
比方A,B,C,D是四个连续的提交,其中B与A一样,除了一些文件删除了。我们想把这 些删除的文件加回D。我们如何做到这个呢?
至少有三个解决方案。假设我们在D:
A与B的差别是那些删除的文件。我们可以创建一个补丁代表这些差别,然后吧补丁 打上:
$ git diff B A | git apply
既然这些文件存在A,我们可以把它们拿出来:
$ git checkout A foo.c bar.h
我们可以把从A到B的变化视为可撤销的变更:
$ git revert B
哪个选择最好?这取决于你的喜好。利用Git满足自己需求是容易,经常还有多个方法。