在项目开发过程中, 常常需要把工作从开发主线上分离开来,以免影响开发主线。比如紧急的修复一个严重BUG,一个对代码结构影响比较大的新功能的开发等等。
几乎所有的版本控制系统都以某种形式支持分支。 但是只有GIT提供了一种极其便捷轻便的分支管理机制。 这是GIT产生后迅速在全球大受欢迎的最主要的原因。因为在工作流程代码的分支和合并太重要了,直接影响到开发的便捷性。
Git 是如何保存数据的
假设现在有一个工作目录,里面包含了三个将要被暂存和提交的文件
假设对hello.py做些修改后再次提交
这次产生的提交对象会包含一个指向上次提交对象(父对象)的指针.
如果再发生一次修改提交:
Git 的 “master” 分支和其他分支比起来并没有特别之处。
git init 创建Git仓库的命令同时默认创建了它,大多数人都懒得去改动名字:
分支创建
Git 的分支,其实本质上仅仅是指向提交对象的可变指针.
Git创建分支时,只是为你创建了一个可以移动的新的指针:
那么,既然有多个分支,Git又是怎么知道当前在哪一个分支上呢? 也很简单,Git用一个名为 HEAD 的特殊指针来记录当前的分支。 你可以将HEAD想象为当前分支的别名.
运行git branch创建新分支时,git并不自动切换到新分支上, 也就是HEAD没有改变.
分支切换
使用git checkout命令:
>>git checkout testing
这样 HEAD 就指向 testing 分支了:
现在我们继续修改文件,再提交一次:
>>git commit -a -m '再次改变'
上图表明: testing 分支向前移动了,但是 master 分支却没有。
现在我们切换回master分支。
>>git checkout master
这条命令使HEAD指回master分支,同时将工作目录重载成master分支所指向的快照内容:
我们继续再稍微做些修改并提交
>>git commit -a -m '在master分支上的修改'
现在,这个项目的提交历史产生了分叉。因为这2次提交是在不同分支上进行的。
领取专属 10元无门槛券
私享最新 技术干货