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

标签 git intellij-idea

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

从现在开始,我检查过的每个分支都会出现在我来自 Intellij 的 GIT View 中(通过 VCS > Git > Branches...),请参见:

enter image description here

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

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

谢谢:)

编辑:我找到了一种删除它们的方法,但使用的是另一个工具:“Git Gui”。当您从那里删除它时,它也会在 IntelliJ 中删除。并且您可以一次删除多个分支。

最佳答案

远程跟踪分支很容易与普通的 Git 分支混淆。远程跟踪分支以 remotes/ 开头,如 remotes/origin/branch1,尽管 Git 允许您省略 remotes/ 作为速记,所以你也可以将 remotes/origin/branch1 简单地称为 origin/branch1。但这些不是正常的分支。您不能提交给他们或直接检查它们。如果你尝试 check out 它们,Git 要么 check out 分离的 HEAD,要么自动创建一个与远程分支同名的新本地分支,例如分支 1。这个新的本地分支永远不会被删除,除非告诉 Git 明确删除它。

发生的事情是双重的:

  1. 您需要确保 Git 正在修剪远程跟踪分支(remotes/origin/branch1 等)。默认情况下它没有。参见 this question on pruning remote tracking branches如何做到这一点。基本上是 git fetch -p origingit remote prune origin

  2. 当您 check out 一个分支以对其进行处理时,您创建了一个与远程跟踪分支同名的本地分支。本地分支 branch1 永远不会被删除,除非你手动删除,即使远程跟踪分支 remotes/origin/branch1 被修剪,如果 branch1 已在远程服务器上删除。

您可以使用 git branch -d 手动清理这些分支(或者使用 -D 强制清理,如果分支从未被 merge ,这可能是必要的),或者查看 Remove old remote branches from Git 的答案以一种自动化的方式来做到这一点。

关于git - IntelliJ - GIT 在 GUI 中删除本地孤立分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38508550/

相关文章:

git push 返回错误 500(谷歌代码)

java - IntelliJ Structural Search 不会替换链/流畅接口(interface)中的所有方法调用

java - Intellij 无法从另一个模块中的一个模块访问类

intellij-idea - IntelliJ 是否支持 VS Debugger Visualizers 之类的东西?

git - 在 VSTS 中使用多个 SSH key

git - 允许 node.exe 并忽略所有其他 .exe

git - 如何更改多个提交的作者和提交者姓名/电子邮件?

git - 我如何 "git clone"一个 repo,包括它的子模块?

intellij-idea - 具有2个 Ant 目标的Gradle任务-尝试合并 Ant 目标以加快执行时间

java - 在 Intellij 中缩进 lambda 函数体