LV01-Git-04-Git本地仓库-07-分支管理

本文主要是Git中分支的管理的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
Windows windows11
Ubuntu Ubuntu16.04的64位版本
VMware® Workstation 16 Pro 16.2.3 build-19376536
点击查看本文参考资料
点击查看相关文件下载
--- ---

【说明】本节笔记的相关操作在Windows下进行,因为VS Code有个Git的插件,可以很直观的演示一些东西。由于Git安装后自带一个Git-Bash终端,所以就不用Win下的命令行啦,就用的这个终端,因为它里边的命令与Linux很类似,而windows中的命令行有些命令与linux并不相同,为了统一,还是用用Git自带的终端啦。另外VS Code是可以选择使用的终端的,我直接将VS Code使用的终端改成了git-bash,这样更方便一些。

这部分我们需要沿用上一节笔记中我们做测试的仓库。

一、git branch

1. 命令说明

当我们的版本库中与多个分支的时候,我么可以通过以下命令来查看所有分支,以及当前所处分支:

1
git branch [arg]

arg表示这条命令后边还可以跟一些东西,下边通过实例说明。

2. 查看所有分支

我们在上一节笔记中使用的仓库里边敲下边的命令:

1
git branch

然后我们会看到以下信息:

image-20230623115542984

注意 master 分支前的 * 字符:它代表现在检出的那一个分支(也就是说,当前 HEAD 指针所指向的分支)。 这意味着如果在这时候提交,master 分支将会随着新的工作向前移动。

3. 新建分支

前边我们就知道,git branch后边加上一个分支名,就可以从当前分支迁出一个新的分支,并并且和当前分支完全一样:

1
git branch <branch_name>

我们执行此命令后会得到以下信息:

image-20230623122051616

4. 从指定的提交创建分支

其实我们还可以通过以下命令从指定的提交记录创建一个分支:

1
git branch <branch_name> <commit_hash>

commit_hash就表示提交记录的hash值。我们现在从master分支的f5a3adf这次提交创建一个新的分支:

1
git branch com_test f5a3adf
image-20230623122455577

二、git branch -v

如果需要查看每一个分支的最后一次提交,可以运行 git branch -v 命令:

1
git branch -v

我们会看到如下输出信息:

image-20230623115737011

三、git branch –merged

1. 命令说明

这里有两个选项 --merged--no-merged ,它们会在没有给定提交或分支名作为参数时, 分别列出已合并或未合并到 当前 分支的分支。

1
2
git branch --merged           # 查看哪些分支已经合并到当前分支
git branch --no-merged # 查看所有包含未合并工作的分支

另外,我们总是可以提供一个附加的参数来查看其它分支的合并状态而不必检出它们。 例如,尚未合并到 master 分支的有哪些?

1
git branch --no-merged <branch_name>

2. 使用实例

我们将hotfix分支和iss53分支都合并到了master分支,演示这两个命令的话不是很好,我们切换到iss53分支:

1
2
3
4
5
6
7
git checkout iss53
git branch --merged
git branch --no-merged

# 或者在master分支一步到位
git branch --merged iss53
git branch --no-merged iss53

我们会看到以下输出信息:

image-20230623120302153

四、git branch -D/-d

已经不使用的分支,我们可以将其删除:

1
2
git branch -d <branch_name>   # -d 删除已合并分支
git branch -D <branch_name> # -D 强制删除分支,不管是否已经合并

通常我们使用git branch --merged命令获取到的已合并到当前分支的列表中分支名字前没有 * 号的分支通常可以使用 git branch -d 删除掉;我们已经将它们的工作整合到了另一个分支,所以并不会失去任何东西。

通过git branch --no-merged查看所有包含未合并工作的分支时显示的列表的分支中包含了还未合并的工作,尝试使用 git branch -d 命令删除它时会失败:

1
2
error: The branch 'branch_name' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.

如果真的想要删除分支并丢掉那些工作,如同帮助信息里所指出的,可以使用 -D 选项强制删除它。

五、git branc -a

我们从gitee仓库clone一个仓库:git-example: 学习Git的时候的测试仓库 (gitee.com)。会发现它含有多个分支:

image-20241025071124611

但是我们clone下来之后使用git branch命令只能看到默认的master分支:

image-20241025071355070

其实这个时候显示的事是本地仓库,那么这个仓库究竟有多少分支?我们可以使用下面的命令来看:

1
git branch -a
image-20241025071408741

其实我们clone的时候已经clone了所有分支,我们只需要执行:

1
git checkout branc_name

就可以切换到指定的分支。

image-20241025071556653