分支是git的一个强大功能。分支其实就是从某个提交对象往回看的历史。
事实上,我们从一开始就在使用一个分支。当把远程仓库复制到本地时,开发环境将自动启动仓库的master
分支或主分支。
git的大多数工作流程都会包含分支操作。例如,通常的工作流程是,在自己的分支上工作,完成一批更改后,将更改合并到master分支中。
注意 许多git仓库管理器(如GitLab和GitHub)允许对分支进行保护,这意味着不是每个人都可以将更改推送到远程仓库。通常,主分支默认受保护。
后续会更详细地讨论所有这些东西。
创建分支
接下来,我们想尝试修改一些东西,但不想搞乱主分支,这时就可以创建一个分支。
要创建分支,可以使用git branch <branch name>
命令。
Kevin@qikegu MINGW64 /g/project/git-demo (master)
$ git branch dev
这会将新分支添加到本地仓库。当创建一个新的分支时,分支内容将是当前分支的最新提交状态的副本。
虽然工作目录和暂存区跟分支无关,但提交时,总是提交到当前所在的分支。
查看分支
创建好分支后,可以使用git branch
命令查看本地仓库中的分支:
$ git branch
dev
* master
可以看到,本地仓库中有2个分支:master
与 新创建的dev
,前面带*
表示当前分支,当前分支还是master
,创建分支,并不会直接切换到新分支。
切换分支
Git中有一个名为 HEAD 的指针,指向当前分支, HEAD 可以理解为当前分支的别名。创建一个分支,HEAD 指针不会自动切换到新分支。
HEAD指针的情况,如下图所示:
要切换到新分支,需使用git checkout <new branch>
命令,这个命令将 HEAD 指针指向新分支。
注意
git checkout
命令有一个方便的-b
选项,创建分支切换分支可以一次完成,格式:git checkout -b <new branch>
。
执行切换分支命令:
Kevin@qikegu MINGW64 /g/project/git-demo (master)
$ git checkout dev
Switched to branch 'dev'
Kevin@qikegu MINGW64 /g/project/git-demo (dev)
$ git branch
* dev
master
修改test1.txt,添加了新的一行:abcde
:
test1.txt
this is a test text file
abcde
暂存到暂存区,然后提交到dev
分支。
删除分支
要删除分支,可以使用如下命令:
$ git branch -d branch_name
$ git branch -D branch_name
-d
选项是--delete
的别名,只有当分支已经在其上游分支或当前分支中完全合并时,才会删除该分支。- 还可以使用
-D
,这是--delete—force
的别名,它删除分支无论其合并状态如何。