IntelliJ - GIT删除GUI中的本地孤立分支

Gui*_*e M 8 git intellij-idea

我使用IntelliJ(2016.1.3)和GIT集成插件(8.1).在我使用IntelliJ期间,我检查了多个分支.现在这些分支从GIT中删除(在每次拉取请求之后我们删除它们).

从现在开始,我检出的每个分支都出现在我的GIT视图中,来自Intellij(由VCS> Git> Branches ...),见下:

在此输入图像描述

有一种方法可以删除它们:一个接一个地做!但如果有很多分支(比方说一百......),它肯定会变得单调乏味......

问题是: 您是否知道在IntelliJ中是否有一种简单的方法可以从此视图中删除所有孤立本地分支?

谢谢 :)

编辑:我找到了一种方法来删除它们,但在另一个工具:"Git Gui".当您从那里删除它时,它也会在IntelliJ中删除.您可以一次删除多个分支.

Col*_*ett 5

远程跟踪分支很容易与普通的Git分支混淆.远程跟踪分支开头remotes/,如同remotes/origin/branch1,虽然Git允许你省略remotes/作为速记,所以你也可以remotes/origin/branch1简单地引用origin/branch1.但这些都不是正常的分支.您无法承诺或直接检查它们.如果你试图检查它们,Git将检查一个分离的HEAD,否则它将自动创建一个与远程分支同名的新本地分支,例如branch1.除非告诉Git明确删除它,否则永远不会删除这个新的本地分支.

发生的事情是双重的:

  1. 你需要确保Git 修剪远程跟踪分支(remotes/origin/branch1等).默认情况下不会.有关如何执行此操作,请参阅有关修剪远程跟踪分支的此问题.基本上它是git fetch -p origingit remote prune origin.

  2. 签出分支以进行处理时,您创建了一个与远程跟踪分支同名的本地分支.branch1除非您手动执行此操作,否则永远不会删除本地分支,即使远程跟踪分支remotes/origin/branch1已被修剪,如果branch1在远程服务器上删除了该分支也会执行此操作.

您可以手动清理这些分支git branch -d(或强制使用-D,如果分支从未合并,可能是必要的),或者查看从Git中删除旧的远程分支的答案,以便自动执行此操作.

  • 感谢您的解释。但是,我只是想找到一种方法 ** 直接在 IntelliJ 中删除我的本地分支 **,而不是使用任何“命令行”工具:) (3认同)

小智 5

Git 在 git 项目下的 .git 文件夹中跟踪其本地和远程存储库详细信息。

要删除本地孤立分支,请转到:

.git -> refs -> head(在这个位置你可以看到你所有的本地分支)

然后删除不需要的分支。

注意:如果您使用的是 mac os,请清除您的垃圾箱。

这可以一次性清除您本地的孤儿分支。

  • 这应该被标记为最佳答案,它让我可以轻松删除不需要的分支。我们还可以删除 refs/remotes/origin 中的 origin 分支 (2认同)

San*_*o L 5

为了减少删除大量分支的痛苦,您可以转到 git 工具窗口(热键 Alt + 9)。在分支面板中,可以选择多个分支并删除它们。

所以你不必一一删除它们。但请注意,不要删除仍然感兴趣的分支,因为您无法看到与远程分支的连接,或者是否在此视图中修剪了该连接。


axi*_*iac 0

在项目目录中打开控制台并运行:

git remote prune origin
Run Code Online (Sandbox Code Playgroud)

它删除对名为 的远程存储库中不再存在的远程分支的任何本地引用origin

将上面的命令替换origin为远程存储库的名称(本地存储库已知),以防它不是origin

据我所知,使用 IntelliJ Git 插件无法实现此目标。

了解更多信息: https: //git-scm.com/docs/git-remote