首页 > 解决方案 > 删除 git 中的合并分支

问题描述

基于https://stackoverflow.com/a/227026/117421

我想出了以下是否有任何错误?

这个想法是在 git 中查找和删除旧分支。

git branch -r --merged origin/master为您提供已合并到 master 的所有远程分支。但是,它默认包含 master 本身,并且似乎也包含 HEAD -> origin/master。

查找合并到 master 的所有分支,不包括 master 和 HEAD

git branch -r --merged origin/master | grep -v origin/master排除这两个条目。

在 bash 中进入循环是微不足道的。

for remotebranch in $(git branch -r --merged origin/master | grep -v origin/master); do
echo $remotebranch
done

但是,这列出了分支名称,包括 origin这是错误的格式push --delete

这可以通过替换origin/为空字符串来解决。

删除 origin/ 前缀

for remotebranch in $(git branch -r --merged origin/master | grep -v origin/master | sed 's/origin\///g'); do
echo $remotebranch
done

所以我认为以下可能会运行,它是否正确,或者有更好的方法吗?

最终解决方案

for remotebranch in $(git branch -r --merged origin/master \
| grep -v origin/master \
| sed 's/origin\///g'); do
git push origin --delete $remotebranch
done

最后你总是可以跑 git fetch --prune

标签: bashgit

解决方案


推荐阅读