Git 删除分支——如何删除本地或远程分支

2021-08-27 10:25:07 浏览数 (41413)

Git 是一种流行的版本控制系统,也是 Web 开发人员工具包中必不可少的工具。分支是使用 Git 的一个强大且不可或缺的部分。在本文中,您将学习有关如何在 Git 中删除本地和远程分支的基础知识。

Git 中的分支是什么?

分支是指向提交的指针。

Git 分支是从特定时间点开始的项目及其更改的快照。

在处理大型项目时,有包含所有代码的主存储库,通常称为main或master。

分支允许您创建原始主要工作项目的新的、独立的版本。您可以创建一个分支来编辑它以进行更改、添加新功能或在尝试修复错误时编写测试。一个新的分支可以让你在不以任何方式影响主代码的情况下做到这一点。

总而言之 - 分支让您可以在不影响核心代码的情况下更改代码库,直到您完全准备好实施这些更改。

这有助于您保持代码库整洁有序。

为什么要删除 Git 中的分支?

因此,您已经创建了一个分支来保存要在项目中进行的更改的代码。

然后,您将该更改或新功能合并到项目的原始版本中。

这意味着您不再需要保留和使用该分支,因此删除它是一种常见的最佳做法,以免它弄乱您的代码。

如何在 Git 中删除本地分支

本地分支是您本地机器上的分支,不会影响任何远程分支。

在 Git 中删除本地分支的命令是:

git branch -d  local_branch_name
  • git branch 是在本地删除分支的命令。
  • -d是一个标志,是命令的一个选项,它是--delete. 顾名思义,它表示您要删除某些内容。-local_branch_name是要删除的分支的名称。

让我们通过一个例子来更详细地研究一下。

要列出所有本地分支,请使用以下命令:

git branch

我有两个,分支master和test2. 如图所示,我目前在test2分支上(*):

Screenshot-2021-08-25-at-4.13.14-PM

我想删除test2分支,但无法删除您当前所在和查看的分支。

如果您尝试这样做,您将收到如下所示的错误:

Screenshot-2021-08-25-at-4.17.50-PM

因此,在删除本地分支之前,请确保使用以下git checkout命令切换到您不想删除的另一个分支:

git checkout branch_name

#where branch_name is the name of the branch you want to move to
#in my case the other branch I have is master, so I'd do:
#git checkout master

这是输出:

Screenshot-2021-08-25-at-4.20.40-PM

现在我可以删除分支:

Screenshot-2021-08-25-at-5.10.13-PM

我们刚刚使用的删除本地分支的命令并非在所有情况下都有效。

如果分支包含未合并的更改和未推送的提交,则该-d标志将不允许删除本地分支。

这是因为任何其他分支都看不到提交,并且 Git 正在保护您免于意外丢失任何提交数据。

如果你尝试这样做,Git 会显示一个错误:

Screenshot-2021-08-25-at-5.23.46-P​​M

正如错误所暗示的那样,您需要改用该-D标志:

git branch -D local_branch_name

-D带有大写-- delete --force字母D(它是 的别名)的标志会强行删除本地分支,无论其合并状态如何。

但请注意,您应该谨慎使用此命令,因为没有提示要求您确认您的操作。

仅当您绝对确定要删除本地分支时才使用它。

如果您没有将其合并到另一个本地分支或将其推送到代码库中的远程分支,您将面临丢失所做的任何更改的风险。

Screenshot-2021-08-25-at-5.33.41-PM

如何在 Git 中删除远程分支

远程分支与本地分支是分开的。

它们是托管在远程服务器上的存储库,可以在那里访问。这与本地分支相比,本地分支是本地系统上的存储库。

删除远程分支的命令是:

git push remote_name -d remote_branch_name
  • git branch您可以使用该命令删除远程分支,而不是使用用于本地分支的git push命令。
  • 然后您指定遥控器的名称,在大多数情况下是origin.
  • -d是删除标志,是--delete.
  • remote_branch_name 是要删除的远程分支。

现在,让我们看一个如何删除远程分支的示例。

要查看任何远程分支,请使用以下命令:

git branch -a

该-a标志(一个别名--all)显示所有分支机构-本地和远程。

Screenshot-2021-08-25-at-7.35.31-PM

我有两个名为masterand 的本地分支test和两个远程分支origin/masterand origin/test。

的-r,一个别名--remotes,显示仅在远程存储库。

Screenshot-2021-08-25-at-7.37.12-PM

我想删除远程origin/test分支,所以我使用命令:

git push origin -d test

输出:

Screenshot-2021-08-25-at-7.39.34-PM

这删除了test名为 的远程存储库中的分支origin。

该origin/test远程仓库就不再出现了:

Screenshot-2021-08-25-at-7.42.01-PM

结论

您现在知道如何在 Git 中删除本地和远程分支。感谢阅读,祝学习愉快!