分支不是Git独有的特性,常用的版本控制系统都有分支管理。此处基于Git分支来讲:
git commit
之后,Git 会把它们串成一条时间线,这条时间线就是称为一个分支。master分支
,也叫主分支。HEAD的概念比较抽象,暂不做详细说明,此处只做两点关键性说明:
**指针**
;Git创建、切换、删除分支的速度特别快(秒级的),正常情况下1秒内就能完成。
除了Git,还有其他版本控制系统(如SVN),版本控制系统都有分支管理,但是他们创建和切换分支的速度特别慢,耗时长。
多个分支之间代码独立,互不影响。
git branch {分支名称}
创建分支# 创建dev分支
git branch dev
git checkout -b {分支名称}
# 创建dev分支,并切换到dev分支
git checkout -b dev
git switch -c {分支名称}
# 创建dev分支,并切换到dev分支
git switch -c dev
git branch
命令会列出本地版本库中的所有分支。其中前面标*
号表示是当前分支。
# 查看本地分支
git branch
# 查看本地和远程的所有分支
git branch -a # 分支前带有remotes/的是远程分支,否则是本地分支
通过git checkout
切换分支。
# 切换到dev分支
git checkout dev
# 通过git branch查看分支,此时dev分支前应该标有*号
git branch
通过git switch {分支名称}
切换分支。
# 切换到dev分支
git switch dev
# 通过git branch查看分支,此时dev分支前应该标有*号
git branch
通过git merge {分支名称}
合并分支,是将merge后面的分支合并到当前分支。
# 查看确认当前分支为master
git branch # master分支前应该标有*号
# 将dev分支合并到当前分支(master分支)
git merge dev
分支合并成功后,merge后面的分支的修改会被增加到当前分支。
如果遇到冲突,手动解决冲突。推荐使用vscode可以更高效的解决冲突。
经验之谈,冲突其实并不可怕,我们需要耐心的阅读代码,把有用的代码留下,然后 git add,然后git commit就可以了。只是有时候冲突代码量比较大的时候,更需要我们的耐心。
# 查看分支合并情况
git log --graph --pretty=oneline --abbrev-commit
通过git branch -d {分支名称}
删除分支。
# 删除dev分支
git branch -d dev
# 强制删除feature分支(一个没有被合并过的分支)
git branch -D dev
在实际开发中,我们应该按照几个基本原则进行分支管理:
master
分支应该是非常稳定的,仅用来发布新版本,平时不在上面工作;dev
分支,顾名思义,平时开发过程中我们都在dev上工作,阶段性的合并到master
分支即可。dev
分支上。