核心要点
- 删除分支是Git工作流程中不可或缺的一环。
- 可以使用命令 `git branch -d [分支名]` 来删除本地分支,但需留意未合并的更改。
- 不同的工具如GitHub Desktop、GitKraken、Tower和Bitbucket都有各自删除分支的方法,务必熟悉各个工具的操作流程。
Git的分支功能非常轻便,可以根据需要轻松创建。然而,也容易产生不再需要的残留分支。那么,删除分支究竟涉及哪些方面呢?
为什么要删除分支?
初学者在学习如何使用Git分支构建项目时,很可能会创建一些之后发现并不需要的分支。这是很正常的,因为分支操作本身就非常轻量,速度快且节省磁盘空间。
因此,许多Git开发工作流程都鼓励使用分支,即使是很小或很短的任务也会创建单独的分支。比如,常见的做法是为每个错误修复创建一个独立的分支。
删除分支应该像创建分支一样,成为日常工作流程的一部分。
带有分支的示例仓库
以下示例引用了一个具有以下结构的示例仓库:
请注意,该仓库有两个分支:`main` 和 `dev`。每个本地分支都是一个跟踪分支,在远程服务器(源)上都有对应的上游分支。
分支很容易被遗忘,因此请务必知道如何从命令行列出Git分支或在首选客户端中查看它们。
使用命令行删除分支
删除分支的基本命令语法是:
git branch (-d | -D) [-r] <branchname>...
如何删除本地分支
最简单的形式是删除本地分支,前提是其所有更改都已合并:
git branch -d dev
当一切顺利时,您会看到一条确认消息:
您不能删除当前活动的分支。如果尝试这样做,您将收到如下消息:
如果您删除包含未合并、未推送更改的本地分支,您将会丢失这些更改。因此,Git默认会拒绝删除这样的分支。在此示例中,`dev` 分支包含尚未推送到远程分支的更改:
正如错误消息所示,可以使用`-D`标志强制删除。
如果本地跟踪分支对应的远程分支是最新的,即使它未合并,您也可以删除它。Git仍然会显示警告,让您了解情况:
如何删除远程分支
删除远程分支有所不同。您将使用`git push`命令和`-d`标志来删除。之后,提供远程名称(通常是`origin`)和分支名称:
使用 GitHub Desktop 删除本地和远程分支
与命令行Git程序不同,GitHub的桌面应用程序仅允许您删除非活动分支。您可以通过“分支”菜单,选择“删除”选项并确认:
GitHub Desktop不允许您删除默认分支(例如`main`),即使Git本身支持此操作。如果默认分支是当前活动分支,该应用程序将禁用菜单操作。
如果该分支也代表远程分支,GitHub Desktop也会提供从远程删除它的选项:
使用 GitKraken 删除分支
GitKraken在左侧边栏中显示仓库的本地和远程分支。您必须分别删除它们。
将鼠标悬停在适当的分支名称上,然后单击看起来像三个垂直点的分支操作菜单。从菜单中选择删除 <分支名称>:
您将看到一条确认消息,通知您这是破坏性操作。您可以使用“删除”按钮确认要继续:
为了与Git命令行程序的默认行为保持一致,您必须首先切换到要删除的分支之外的分支。否则,您将看到一条错误消息:
使用 Tower 删除本地和远程分支
删除分支在Tower中的操作与使用GitKraken非常相似。该应用程序在左侧的面板中显示本地和远程分支。右键单击任何分支并从上下文菜单中选择“删除”选项:
一个关键的区别是您可以在确认期间删除远程分支及其本地分支:
删除 GitHub 上的分支
GitHub仅充当远程源,因此默认情况下那里的分支是远程的。如果您使用GitHub网站删除分支,则必须使用此处介绍的其他方法之一删除相应的本地分支。
与GitHub Desktop应用程序一样,GitHub网站不允许您删除默认分支。如果您尝试,您会看到一条错误消息:
但是,删除任何其他分支也很简单。在仓库的“代码”页面中,单击“分支”链接,找到要删除的分支,然后单击“删除分支”图标,该图标看起来像一个垃圾桶:
请注意,不会检查未合并的更改,因此GitHub将立即删除分支。但是,因为它始终代表远程分支,因此这种行为是合理的。
请注意,删除后,您会看到一个“恢复分支”按钮。然而,这只是一个有用的撤消功能,以防万一您意外单击删除图标。不要依赖它,因为一旦您刷新或离开页面,您就会失去该选项!
删除 Bitbucket 上的本地和远程分支
Bitbucket与GitHub类似,不允许您删除默认分支。Bitbucket将其称为仓库设置中的主分支。您可以通过相应的“操作”菜单删除“分支”选项卡上列出的任何其他分支:
如果您正在进行大型清理操作,还可以一次删除多个分支:
删除分支是典型 Git 工作流程的一部分
Git分支可能会使您的工作流程变得复杂,特别是具有本地、远程和跟踪分支的工作流程。但是,对于简单的日常开发,您可能一直会创建和删除本地分支。这是您应该习惯的典型Git工作流程的核心方面。
如果您发现很难准确记住如何删除分支,请考虑设置别名来简化过程。