跳到主要内容

Git 分支管理

查看分支

查看本地 Git 仓库分支情况:

git branch

查看所有分支:

git branch -a

查看所有远程分支:

git branch -r

切换分支

git checkout [分支名称]

创建分支

创建一个新的本地分支

可以使用 branch 命令在本地创建新的分支:

git branch [分支名称]

使用 checkout 命令加 -b 选项可以创建分支,并切换到该分支:

git checkout -b [分支名称]

拉取远程分支并创建本地分支

git checkout -b [本地分支名称] [origin/远程分支名称]

使用该方式会在本地新建一个分支,并自动切换到该本地分支。采用此种方法建立的本地分支会和远程分支建立映射关系。(注意:远程仓库不一定是 origin)

另一种方法是使用 fetch 命令,如:

git fetch origin 远程分支名x:本地分支名x

使用该方式会在本地新建一个分支,但是不会自动切换到该本地分支,需要手动 checkout 一下。采用此种方法建立的本地分支不会和远程分支建立映射关系。

创建一个空的分支

在 Git 中创建分支,是必须有一个父节点的,也就是说必须在已有的分支上来创建新的分支,如果工程已经进行了一段时间,这个时候是无法创建空分支的。但是有时候就是需要创建一个空白的分支。

使用 git checkout-orphan 参数

git checkout --orphan emptybranch

该命令会生成一个叫 emptybranch 的分支,该分支会包含父分支的所有文件。但新的分支不会指向任何以前的提交,就是它没有历史,如果你提交当前内容,那么这次提交就是这个分支的首次提交。

如果想要空分支,可以把当前内容全部删除

git rm -rf .

然后重新添加文件并提交

echo '# new branch' >> README.md
git add README.md
git commit -m 'new branch'

接下来就可以 push 到远程仓库,这样一个新的空分支就创建完成了。

git push origin emptybranch

删除分支

大多数情况下,删除 Git 分支是很简单的。

删除本地分支

命令如下:

git branch -d <branch>

如果你还在一个分支上,那么 Git 是不允许你删除这个分支的。应该先退出该分支再删除,例如删除当前的 fix/authentication 分支:

git checkout master
git branch -d fix/authentication

当一个分支被推送并合并到远程分支后,-d 才会本地删除该分支。如果一个分支还没有被推送或者合并,那么可以使用 -D 强制删除它。

删除远程分支

命令如下:

git push <remote> --delete <branch>

还是以上面例子为例,删除远程 origin 仓库的 fix/authentication 分支:

git push origin --delete fix/authentication

如果觉得这行命令太长,也可以通过如下简短命令来操作:

git push origin :fix/authentication

思考

什么时候需要删除分支

一个 Git 仓库常常有不同的分支,开发者可以在各个分支处理不同的特性,或者在不影响主代码库的情况下修复 bug。

仓库常常有一个主分支(master 或 main)分支,表示主代码库。开发人员创建其他分支,处理不同的特性。

开发人员完成处理一个特性之后,常常会删除相应的分支。