Git使用学习(十七、Git的分支管理机制)

Git 的分支,其实本质上仅仅是指向提交对象的可变指针。 Git 的默认分支名字是 master。 在多次提交操作之后,你其实已经有一个指向最后那个提交对象的 master 分支。 它会在每次的提交操作中自动向前移动。

注:Git 的 “master” 分支并不是一个特殊分支。 它就跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它,并且大多数人都懒得去改动它。
 

下图表示我们在默认的master分支进行三次提交后的状态。HEAD指针和master指针,都指向最新的提交。

 

 

假设我们通过下面命令创建了一个testing分支

$ git branch testing

 

对于git来说,分支的创建很简答,就是创建了一个指针。

 

注:对于svn,创建分支需要重新拷贝一份文件和目录,git只是创建一个指针。

 

当然对于新创建的testing分支这个指针,HEAD指针还是指向之前创建testing分支的master分支。

 

 

说到这里,使用下面命令切换分支就很简单了。

$ git checkout testing

只需要HEAD指针,指向testing分支这个指针就可实现分支的切换。

 

 

假设我们在testing分支上创建,并提交一个文件

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

可以看到对比上一个版本,增加了一个87ab2这个版本

此时testing 分支向前移动了,但是 master 分支却没有,它仍然指向运行 git checkout 时所指的对象。 这就有意思了,现在我们切换回 master 分支看看:
 

$ git checkout master

 

可以看到,切换到master分支只是移动了一下HEAD指针。

这条命令做了两件事。 一是使 HEAD 指回 master 分支,二是将工作目录恢复成 master 分支所指向的快照内容。也就是说,你现在做修改的话,项目将始于一个较旧的版本。 本质上来讲,这就是忽略 testing 分支所做的修改,以便于向另一个方向进行开发。
 

注意:分支切换会改变你工作目录中的文件。在切换分支时,一定要注意你工作目录里的文件会被改变。 如果是切换到一个较旧的分支,你的工作目录会恢复到该分支最后一次提交时的样子。所以一定要记得切换分支前,提交工作目录的内容。

 

 

我们现在处于master分支上,接下来我们使用master分支在做一次提交。

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

 

此时的情况和前面不一样了,此时出现了真正的分叉。

 

 

这里我们其实已经懂得了分支切换了。

 

 

 

这个是和我们打算把testing分支合并到master分支上。

当然,可能会出现合并冲突,这个就需要我们解决了。总之解决后会完成这次合并。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的小刺猬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值