注意:如果您的工作流程将这些分支作为可能的祖先,您可以添加其他分支来排除,例如 master 和 dev。通常我会从“sprint-start”标签中分支出来,master、dev 和 qa 不是祖先。
首先,列出在远程合并的本地跟踪分支(考虑使用-r
标志列出所有远程跟踪分支)。
git branch --merged
您可能会看到一些不想删除的分支。我们可以添加一些参数来跳过我们不想删除的重要分支,例如master或develop。以下命令将跳过 master 分支以及其中包含 dev 的任何分支。
git branch --merged| egrep -v "(^\*|master|main|dev)"
如果想跳过,可以将其添加到egrep命令中,如下所示。分支skip_branch_name
不会被删除。
git branch --merged| egrep -v "(^\*|master|main|dev|skip_branch_name)"
要删除已合并到当前签出分支的所有本地分支:
git branch --merged | egrep -v "(^\*|master|main|dev)" | xargs git branch -d
您可以看到 master 和 dev 被排除在外,以防它们是祖先。
您可以使用以下命令删除合并的本地分支:
git branch -d branchname
如果未合并,请使用:
git branch -D branchname
要从远程使用中删除它:
git push --delete origin branchname
git push origin :branchname # for really old git
从远程删除分支后,您可以使用以下命令进行修剪以摆脱远程跟踪分支:
git remote prune origin
或修剪单个远程跟踪分支,正如另一个答案所建议的那样:
git branch -dr branchname