什么是分支?
廖雪峰老师的例子很好,我决定直接引用过来:
分支,就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。
分支在实际中有什么用呢?
假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
现在有了分支,就不用怕了。
你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
分支操作
1、创建分支
使用命令:git branch <branchname>
,其功能只涉及到新建一个分支。
2、切换分支
使用命令:git switch <branchname>
另一种方法:
git checkout -b <branchname> # 在创建分支的同时,切换到对应分支
3、合并分支
使用命令:git merge <repo_to_be_merged>
示例代码: 假设现存2个分支,分别为bugFix
和main
,且当前指针指向bugFix
分支
git switch main # 将指针移动到main
git merge bugFix
使用命令:git rebase <repo_name>
功能概述:git rebase
是基于一个分支,创建下一个时间线。
示例代码:假设当前情况下,有2个分支,分别为分别为bugFix
和main
,且当前指针指向bugFix
分支,要求建立如下的分支,
git checkout -b bugFix
git commit
git switch main
git commit
git switch bugFix
git rebase main # 在main的基础上,向前延伸,并将main和bugFix 2条分支的代码合并
额外
关于checkout
命令
在 Git 2.23 版本中,引入了一个名为 git switch
的新命令,最终会取代 git checkout
,因为 checkout
作为单个命令有点超载(它承载了很多独立的功能)