github学习笔记(七):分支管理之创建与合并分支
分支是项目合作的关键功能
顾名思义,分支就是在主路上分出的各种枝节,都是为了发展壮大(完成任务)。你的任务是一个分支,我的任务是一个分支,一起提交我们一起完成了一个大任务,从流水作业变成了同步作业,节约了不少时间。
“分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。”
分支介绍
在版本回退中,每一次的提交都会被串成一条线,这条时间线就是一个分支(很有平行世界的感觉)。此时,只有一条时间线称为主分支(master分支)。
其实HEAD指针指向的是master,master指向提交。因此,HEAD指向的就是当前分支。
每提交一次,分支就向前发展一步。
分支的创建、合并和删除
创建和查看
那么创建新分支是什么意思呢?
在某一步选择的岔路口,又多了一条路。具体的实现方式就是又加了一个新的指针叫dev,当HEAD指向dev时,你就顺利走在了dev这条分支上。此后所做的所有修改都是针对dev这条路的。
$ git checkout -b dev
上述命令表示的是创建dev分支,并切换
上述git checkout -b相当于下述两条命令
$ git branch dev
$ git checkout dev
使用git branch 命令查看当前分支,当前分支前面会标一个 * 号。
$ git branch
合并
所有的支线最终都要回到主线,那么如果你的支线任务完成了,如何将工作合并到主线上呢?
最简单的方法就是直接把master指向dev的当前提交,就完成了合并。【只是对指针的修改,工作内容并不发生变化】
$ git merge dev
git merge命令用于将指定分支合并到当前所在分支中。
删除
合并完分支后,甚至可以删除dev分支【就是传说中的精炼经验,忽略过程】
删除dev分支就是把dev指针给删掉,删掉后就剩下了一条master分支。
$ git branch -d dev
注意事项
之前说撤销文件修改时使用过check out命令: git checkout -- readme.txt是撤销工作区的修改,当只有一个短划线时变成了更换分支的命令。
实际上切换分支使用switch更加科学。
创建并切换到新的dev分支可以直接使用:
$ git switch -c dev
直接切换到已有的master分支,可以使用:
$ git switch master
不管是哪个分支,工作区和暂存区都是公用的