git原理笔记(二)

git原理笔记(二)git如何管理版本

git如果每次查看记录的时候,都使用上一节的命令 git log –stat bc2be49f6d218c6434e65b02a7907bb53abe4f9a 那么得记住这个sha-1值,git使用引用来记住这个值。git将引用保存在.git/refs/下面。目前我们还没有引用被创建。我们可以看一下refs下面的目录结果,如下图:
这里写图片描述
heads——目录就是用来存放普通引用的。
tags——用来存放标签引用。
我们为了简化git log的书写,可以使用如下命令:
这里写图片描述
可见,我们给最新的提交,指定了一个引用,这个引用叫做wanbiao。虽然可以这样做。但是git却不建议这样用。git提供了特定的命令来完成相同的功能。
git update-ref ref/heads/wanbiao bc2be4…
这里写图片描述
我们创建了两个引用,两个引用都指向同一个提交。一个引用叫做wanbiao,一个引用叫做wanbiao-other
我们在运行一个命令,git branch,如下
这里写图片描述
我们并没有创建分支,但是git branch显示有两个分支,一个分支为wanbiao,一个分支为wanbiao-other
原因:git的分支管理,就是通过管理引用来实现的。
在一个git库中,有很多很多的commit对象,不同的引用使用不同的commit对象。那么现在我们给wanbiao和wanbiao-other,分别增加一个不同的提交。如下:
这里写图片描述
这里写图片描述
现在给wanbiao-other分支增加一个提交
这里写图片描述
现在他们的关系,用图表表示如下:
这里写图片描述
现在我们有了两个分支。每个分支都有自己不同的提交记录。
但是,我们在使用过程中,还是直接git log就能看到提交记录,后面根本不用跟上相应的分支名。
此时,git去寻找HEAD所指向的引用。我们将HEAD文件进行如下操作:

这里写图片描述
我们将HEAD文件的内容,修改为ref: refs/heads/wanbiao
注意,这里没有将commit对象的SHA-1值,写入HEAD文件中,而是,将一个引用放在了HEAD文件中。如果我们将ref: refs/head/wanbiao-other放进了HEAD文件里面。那么,git log显示的信息就是分支wanbiao-other的提交记录。

现在我们有了两个分支,并且在上一节中也提到了,git如何存储这些信息
有了这些内容,对于理解tag,以及merge,rebase,pull和push就特别好理解了。

本来想继续对,git的服务器搭建和git的数据恢复做笔记,不过想想算了,网上那么多教程,等我忘记的时候,直接百度就可以了。
这里推荐git官网,请直接翻看英文版,中文版有部分翻译错误

下面一个专题就是《c++ primer》的翻译了,浩大工程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值