1

在我们的工作流程中,生产就绪的开发分支被推送到远程跟踪存储库,并在其中合并到主存储库中。测试通过后,分支将被删除。

我一直不喜欢删除那些开发分支的本地版本,所以现在我有许多本地分支,它们在原点上没有相应的分支。

有没有一种快速的方法来查找我的存储库中的哪些分支已从远程存储库中删除?

4

2 回答 2

7

在 refs/heads 下查找和删除本地分支

假设原发帖者的意思是他想删除 下的本地分支refs/heads而不是远程跟踪下的分支refs/remotes/origin,那么要找到已经合并到的分支origin/master,只需使用以下内容:

# Fetch latest copy of origin/master
$ git fetch origin

# Find merged branches
$ git branch --merged origin/master

输出将显示已合并 nto 的分支,origin/master因此可以安全地删除git branch -d <branch>。来自官方 Linux Kernel Git 文档git branch

“--merged”用于查找所有可以安全删除的分支,因为这些分支完全包含在 HEAD 中。

删除 refs/remotes/origin 下的远程跟踪分支

另一方面,如果原始发布者的意思是他想删除他的远程跟踪分支,那么只需将-por--prune标志传递给git fetch

$ git fetch -p origin

来自官方 Linux Kernel Git 文档git fetch

获取后,删除远程上不再存在的任何远程跟踪分支。

于 2013-08-06T14:00:18.813 回答
2
git fetch -p

从手册:

-p, --prune 获取后,删除远程不再存在的任何远程跟踪分支。

于 2013-08-06T13:14:25.873 回答