如何删除已经集成的所有远程git分支?

9 浏览
0 Comments

如何删除已经集成的所有远程git分支?

在工作中,我们正在使用主题分支,这些分支在某个时间点会被整合到几个(3个)主分支中。

现在,我想从我的远程仓库中删除所有已完全整合到主分支的主题分支。如果这不可能,也可以获取已整合的本地分支列表。

0
0 Comments

如何删除已经集成的所有远程git分支?

有时候我们需要删除已经集成的所有远程git分支,下面是一种简单的解决方法:

git branch --merged master | grep -v master | xargs -n 1 git push --delete origin

将上述命令放入一个名为'clean'的脚本中,如果你发现经常需要执行这个操作。

如果你想删除所有远程分支,而不仅仅是那些有本地对应分支的分支,可以使用以下命令:

git branch -a --merged remotes/origin/master | grep -v master | grep "remotes/origin/" | cut -d "/" -f 3 | xargs -n 1 git push --delete origin

此外,我建议使用remotes/origin/master而不是普通的master,以排除你在本地合并但尚未推送的内容,以防你最终忘记或决定不推送。

谢谢!这个方法对我有用,但是当分支位于文件夹中时,需要使用cut -d "/" -f 3-代替。我还不得不添加一个grep -v develop来阻止它尝试删除我的开发分支。

如果你有很多分支,xargs -n 1会很慢,可以使用xargs -n 20来提高效率。

更好的做法是解释一下这些命令的作用。

0
0 Comments

问题的出现原因是想要从远程仓库中删除已经合并的分支,解决方法是使用以下代码:git branch -r --merged develop | egrep -iv '(master|develop)' | sed 's/origin\///g' | xargs -n 1 git push --delete origin。这段代码可以删除远程仓库中已经合并的分支。此方法对于在分叉后删除所有上游分支也很有帮助。这是正确的答案,其他方法似乎无法删除包含斜杠(mixed though)的分支,而我们使用了feature/my-feature和bugfix/my-feature。此解决方法看起来很不错,但是非常重要的一点是,使用origin/master或origin/develop作为标准来判断是否可以删除某个分支。不可以仅仅因为将其合并到本地版本的主分支中而从远程删除它,有可能你忘记将该分支推送到远程,这可能意味着删除了未合并的分支。

0
0 Comments

原因:需要删除已经合并到主分支的所有远程git分支。

解决方法:使用以下命令删除所有符合条件的远程分支:

git branch -r --merged origin/master | grep -v master | grep "origin/" | cut -d "/" -f 2- | xargs -n 20 git push --delete origin

解释:

- `git branch -r --merged origin/master`:列出所有已经合并到`origin/master`的分支。

- `grep -v master`:从列表中删除包含`master`的分支名称。

- `grep "origin/"`:选择只有在`origin`远程的分支。

- `cut -d "/" -f 2-`:删除`origin/`前缀。

- `xargs -n 20 git push --delete origin`:执行类似于`git push --delete origin branch-a branch-b branch-c …`的操作,每次最多使用20个参数。

注意:这个解决方法还会删除`origin/HEAD -> origin/master`,但是通常不会操作`origin/HEAD`。

同时,可以根据需要调整`-n`参数的值,更少的参数会使删除速度变慢,更多的参数会使删除速度变快。

0