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

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

分支是仓库中的一部分,我们在其中编写新功能、修复错误等。例如,如果三个开发人员正在开发一个项目,他们可以创建自己的分支并在这些分支上工作,因为分支是隔离的,因此每个人都可以工作在他们独立的分支上。
分支可以是:

  • 本地 – 仅在你的本地计算机上。
  • 远程 – 它位于远程位置,例如在 GitHub 仓库中

实际上,还有第三种类型的分支,即对远程分支的引用。清理的时候,这些分支也要清理干净。今天本文将讨论与分支删除相关的各种场景。本文将向你展示如何删除本地分支和 GitHub 上的远程分支以及删除分支时还会遇到一些常见错误。

为什么需要删除分支

为了确保你的 Git 仓库不是一堆过时且不再使用的旧分支。你应该定期清理分支,删除旧分支或将它们合并到主分支中,代码仓库才会整洁。

删除 Git 本地分支

请注意,删除本地分支不会删除远程分支。这是本地删除分支的命令:

git branch -d "branch name"

image.png

下面的命令也将执行相同的功能,只是语法略有不同。

git branch --delete <branch>

请注意,-d 选项是 --delete 的缩写,仅当分支完全合并到其父分支中时才会删除该分支。如果你有未合并的更改,那么它不会删除分支,并且你将收到错误提示。如果要删除分支,无论合并状态如何,都需要强制删除分支。你可以使用以下命令强制删除本地分支:

git branch -D <branchName>

另一点要记住的是 rebase/merge。如果你的分支处于 rebase/merge 过程中,你将看到错误“Rebase/Merge in progress”,并且你将无法删除你的分支。如果你愿意,可以强制删除,或者可以在重试之前解决 rebase/merge 问题。

删除 Git 远程分支

要从远程仓库中删除分支,请使用以下命令:

扫描二维码关注公众号,回复: 16936508 查看本文章
git push origin -d "branch name" 

image.png

在上面的示例中,远程分支 dev-testing 被删除。以下两个命令都会删除远程分支:

git push <remote_name> --delete <branch_name>

如果你使用的 Git 版本早于 1.7.0,则以下命令适用:

git push <remote_name> :<branch_name> 

请注意,执行 git push origin –delete 只会删除你的远程分支。命令末尾未提及分支名称,但是,如果你将分支名称放在末尾,它将同时将其删除并推送到远程。

什么是跟踪分支以及如何删除它们

当我们从远程分支 check out 本地分支时,它会自动创建所谓的跟踪分支。这些是与远程分支有直接关联的本地分支。这意味着它存在于我们的本地计算机缓存中,但不存在于远程仓库中。

如果你使用命令 git push origin :<branchname> 删除了远程分支,则其引用仍然存在于团队成员的本地代码仓库中。现在,你还需要删除本地引用。 git remote prune origin 删除远程上不存在的分支的引用。

同一命令的另一个版本是:git fetch <remote> --prune 这将删除所有过时的远程跟踪分支。该命令的缩写是: git fetch <remote> -p

要删除特定的本地远程跟踪分支,可以使用以下命令: git branch --delete --remotes <remote>/<branch> 该命令的缩写是: gitbranch -dr <remote>/<branch>

请注意,如果你使用 git push 从命令行删除远程分支 X,那么它也会删除本地远程跟踪分支 origin/X,因此无需使用 git fetch -prunegit fetch –p 删除过时的远程跟踪分支。

image.png

要确认远程跟踪分支是否被删除,可以运行以下命令:

git branch –remotes

可简写为:

git branch –r

如何使用 Web 控制台删除 Github 上的分支

  • 导航到仓库的主页。
  • 在文件列表上方,单击分支。
  • 导航到要删除的分支,然后单击删除图标

image.png

常见问题

无法删除分支

解决方案:你无法删除已经所在的分支。你必须先切换到另一个分支,然后删除所需的分支。请参阅下面的示例:

image.png

在上面的例子中,我们切换到另一个名为 dev-arsam 的分支,然后我们能够成功删除 test 分支。

我不小心删除了一个分支,我可以恢复它吗?

解决方案:是的,你可以使用 git reflog 命令并在已删除分支的顶部找到提交的 SHA1,然后只需 git checkout [sha] 。一旦你进行了该提交,你只需 git branch branchname<SHA> 即可从那里重新创建分支。

git reflog 命令用于记录对分支最近所做的更新。它允许返回提交。重写历史记录后,引用日志包含先前分支提交的历史记录,并可以在需要时返回到特定状态。

下面提供了一个示例,其中名为 dev-arsam 的分支将被恢复。

image.png

如何在合并回 master 时自动删除分支

你可以设置配置,以便你的分支在合并到其父分支例如 master 分支后立即自动删除:

  • 在 GitHub 上,转到仓库的主页。
  • 在你的仓库名称下,单击“设置”。
  • 在“Pull Requests”下,选择或取消选择 Automatically delete head branches

image.png

当我删除与标签同名的分支时出现错误

如果你尝试删除与 tag 同名的分支,你可能会收到错误消息。你将看到类似于 branch-or-tag-name matches more than one 的错误。

如果你想指定删除分支而不是 tag,请尝试以下命令:

git push origin :refs/heads/branch-name

同样,如果你想指定删除 tag 而不是分支,请使用以下命令:

git push origin :refs/tags/tag-name

小结

在本文中,我们了解了在 Git 中删除分支的不同方法,还回答了与在 Git 中删除分支相关的常见问题,相信你在日常工作开发中可以得心应手。

猜你喜欢

转载自blog.csdn.net/p1967914901/article/details/131452348
今日推荐