如何在本地和远程删除Git中的分支

Git最强大的功能之一就是其轻巧的分支。它们使您可以有效地进行并行开发阶段。开发人员甚至可以为单独的错误创建单独的分支。在时间和空间上,分支机构几乎没有成本。

许多git工作流程都处理长期分支和临时分支。因此,在开发过程中经常需要删除分支。有时需要从远程服务器以及本地分支删除共享分支。

为什么要删除分支?

首先,如果您仍然对git有所了解,则很有可能会创建一个分支,然后决定不需要。或者,您可能正在尝试使用分支机构,并希望自己清理一下。这很好,因为git中的分支是轻量级的操作。它非常快并且有效地使用了磁盘空间。

结果,许多git开发工作流程都鼓励分支,即使是很小或很短的任务。例如,一种常见的策略是为单个错误修复程序创建分支。即使只涉及一位作者在一个文件中进行单行更改,也是如此。

由于这些原因,创建和删除分支是需要很好理解的操作。您可能会发现自己经常在典型的开发工作流程中删除分支。

带分支的示例存储库

以下示例引用具有以下结构的样本存储库:

 $ git branch -vv
1 dev 1ae41e8 [origin/dev] first commit
2 * main 1ae41e8 [origin/main] first commit

请注意,每个本地分支在remote: origin都有一个对应的上游分支。

使用命令行删除分支

删除分支的基本命令语法为:

 git branch (-d | -D) [-r] <branchname>...

该命令最简单的形式是删除本地分支,前提是其所有更改均已合并:

 $ git branch -d dev

您不能删除当前处于活动状态的分支。如果您尝试这样做,则会收到以下消息:

 error: Cannot delete branch 'main' checked out at '/tmp/sandbox'

当一切顺利时,您会看到一条确认消息:

 Deleted branch dev (was 1ae41e8).

如果您删除只存在于本地且具有未合并更改的分支,则将丢失这些更改。因此,在这种情况下,git将拒绝删除分支,默认情况下:

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

当错误消息通知您时,您可以使用-D标志强制删除。但是,如果远程存在一个未合并的本地分支,则git将允许您删除它:

 warning: deleting branch 'dev' that has been merged to
'refs/remotes/origin/dev', but not yet merged to HEAD.
Deleted branch dev (was 9a6d20b).

删除远程分支是完全不同的。您将使用git push命令以及-d标志来删除。之后,提供远程名称(通常是origin )和分支名称:

 $ git push -d origin dev
To github.com:bobbykjack/sandbox.git
- [deleted] dev

使用GitHub Desktop删除本地和远程分支

与命令行git程序不同, GitHub的桌面应用程序仅允许您删除活动分支。您可以通过“分支”菜单,选择“删除”选项并进行确认来执行此操作:

尽管git本身支持此功能,但GitHub Desktop不允许您删除默认分支(例如main)。如果默认分支是当前处于活动状态的分支,则该应用将禁用菜单操作。

如果该分支还代表一个远程分支,则GitHub Desktop也提供了从远程删除它的选项:

使用GitKraken删除分支

GitKraken在左侧边栏中显示存储库的本地和远程分支。您必须单独删除每个。

将鼠标悬停在适当的分支名称上,然后单击看起来像三个垂直点的“分支操作”菜单。从菜单中,选择Delete <分支名称>

您会看到一条确认消息,通知您这是一个破坏性操作。您可以确认要继续使用“删除”按钮:

为了反映git命令行程序的默认行为,您必须首先切换到要删除的分支以外的分支。否则,您将看到错误消息:

使用塔删除本地和远程分支

使用Tower删除分支与使用GitKraken删除分支非常相似。本地和远程分支显示在左侧面板中。右键单击任何分支,然后从上下文菜单中选择“删除”选项:

一个关键的区别是,在确认过程中,可以将远程分支及其本地分支一起删除:

在GitHub上删除分支

GitHub仅充当远程源,因此默认情况下,那里的分支是远程的。如果您使用GitHub网站删除分支,则必须使用此处的其他方法之一删除相应的本地分支。

与GitHub桌面应用程序一样,GitHub网站将不允许您删除默认分支。该选项根本不会出现。但是,删除分支很简单。在存储库的“代码”页面中,单击分支链接,找到要删除的分支,然后单击“删除此分支”图标,看起来像垃圾箱:

请注意,不会检查未合并的更改,因此在GitHub上,分支将立即被立即删除。但是,由于它将始终代表一个远程分支,因此这应该是您期望的行为。

请注意,删除后,您会看到一个还原分支的按钮。但是,这只是一个有用的撤消功能,以防您意外单击删除图标。不要依赖它,因为一旦刷新或离开页面,您将失去选择!

删除Bitbucket上的本地和远程分支

像GitHub一样,Bitbucket不允许您删除默认分支。 Bitbucket在存储库设置中将此称为Main分支。您可以通过相应的“操作”菜单删除“分支”选项卡上列出的任何其他分支:

如果要执行大型清理操作,则也可以一次删除多个分支:

删除分支是典型的Git工作流程的一部分

Git分支可以使您的工作流程复杂化,尤其是具有本地,远程和跟踪分支的工作流程。但是对于简单的日常开发,您可能一直都在创建和删除本地分支。这是您应该习惯的典型git工作流程的核心方面。