Git分支浅谈 二

不妨我们再来提交一次:
vim test.rb
git commit -a -m 'made a change'

结果是:


嘿嘿,看到么,分支testing向前移动了一格,而master分支仍然指向原先git checkout时所在的commit对象。
现在我们回到master光临一下:

git checkout master



上面git checkout master做了两件事情。它把HEAD指针移回到master分支,并且把工作目录中的文件换成了master分支所指向的快照内容。也就是说,现在开始所做的改动,将始于本项目中一个叫老的版本。它的主要作用是将testing分支里作出的修改暂时取消,这样你就可以向另外一个方向进行开发。

我们做些修改后再次提交:

$vim test.rb
$git commit -a -m 'made other changer'

现在我们的项目提交历史产生了分叉,如下图:

因为我们刚才创建了一个分支,转换到其中进行了一些工作,然后又回到原来的主分支进行了另外一些工作。这些改变分别孤立在不同的分支里:我们可以在不同的分支里面反复切换,并在时机成熟时把他们合并到一起。而所有这些工作,仅仅需要branch和checkout这两条命令就可以完成,读到这儿你是否觉得git的分支很有兴趣了。
   由于git中的分支实际上仅是一个包含所指对象校验和(40个字符长度SHA-1字串)的文件,所以创建和销毁一个分支就变得非常廉价。说白了,新建一个分支就是向一个文件写入41个字节(外加一个换行符)那么简单,当然也就很快了。


下面分析请参考:
git分支浅谈 三[url][/url]

猜你喜欢

转载自shenyuc629.iteye.com/blog/1700163