• Git如何删除本地分支和远程分支(Git删除分支命令)
  • 发布于 2个月前
  • 284 热度
    0 评论
分支是仓库中的一部分,我们在其中编写新功能、修复错误等。例如,如果三个开发人员正在开发一个项目,他们可以创建自己的分支并在这些分支上工作,因为分支是隔离的,因此每个人都可以工作在他们独立的分支上。 分支可以是:
本地 – 仅在你的本地计算机上。

远程 – 它位于远程位置,例如在 GitHub 仓库中


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

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

删除 Git 本地分支
请注意,删除本地分支不会删除远程分支。这是本地删除分支的命令:
git branch -d "branch name"
下面的命令也将执行相同的功能,只是语法略有不同。
git branch --delete <branch>
请注意,-d 选项是 --delete 的缩写,仅当分支完全合并到其父分支中时才会删除该分支。如果你有未合并的更改,那么它不会删除分支,并且你将收到错误提示。如果要删除分支,无论合并状态如何,都需要强制删除分支。你可以使用以下命令强制删除本地分支:
git branch -D <branchName>
另一点要记住的是 rebase/merge。如果你的分支处于 rebase/merge 过程中,你将看到错误“Rebase/Merge in progress”,并且你将无法删除你的分支。如果你愿意,可以强制删除,或者可以在重试之前解决 rebase/merge 问题。

删除 Git 远程分支
要从远程仓库中删除分支,请使用以下命令:
git push origin -d "branch name" 
在上面的示例中,远程分支 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 -prune 或 git fetch –p 删除过时的远程跟踪分支。

要确认远程跟踪分支是否被删除,可以运行以下命令:
git branch –remotes
可简写为:
git branch –r

用户评论