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

时间:2016-07-21 15:38:21

标签: git intellij-idea

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

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

enter image description here

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

问题是: 你知道在IntelliJ中是否有一种从这个视图中删除所有孤立本地分支的简单方法吗?

谢谢:)

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

6 个答案:

答案 0 :(得分:5)

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

正在发生的事情是双重的:

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

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

  3. 您可以使用git branch -d手动清理这些分支(或强制使用-D,如果分支从未合并,则可能需要这些分支),或查看Remove old remote branches from Git的答案一种自动化的方式。

答案 1 :(得分:2)

我认为删除本地git分支的另一种方法如下所示,根据您的要求,它可能对您有帮助,

git branch -d branch1 branch2 branch3 branch4

如果你从项目目录在终端上执行上面的命令,那么它将删除你传递的所有分支,即branch1 branch2 ... branch_n

我希望它会帮助你。 感谢。

答案 2 :(得分:2)

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

要删除本地孤立分支,请访问:

.git->裁判->负责人(在此位置,您可以看到所有本地分支机构)

然后删除不需要的分支。

注意:如果您使用的是Mac OS,也请清除垃圾箱。

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

答案 3 :(得分:2)

要使删除大量分支不那么痛苦,您可以转到 git 工具窗口(热键 Alt + 9)。在分支面板中,可以选择多个分支并删除它们。

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

答案 4 :(得分:0)

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

header = section.header
header.text = 'foobar'

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

如果不是origin,请将上面命令中的origin替换为远程存储库的名称(如本地存储库所知)。

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

阅读详情:https://git-scm.com/docs/git-remote

答案 5 :(得分:0)

我尝试了@Guillaume M的更新答案,对我来说效果很好。我有许多本地分支(在我的IntelliJ上),当他们的远程对应物被远程合并和删除时,它们松散了。在一段时间内没有做任何家务管理,悬挂的参考文件不断堆积。所以,基本上这些是孤儿没有跟踪任何远程分支。

这是我为清理它们所做的 - 使用'Git Gui'删除孤立本地分支并刷新/重启(虽然不是强制性的)IntelliJ。 Git gui对于这种批量删除分支似乎有点方便。

  1. 启动'Git Gui'工具
  2. '打开现有存储库'。选择使用IntelliJ IDE的存储库的路径。
  3. 在顶部菜单上,选择“分支” - > '删除'
  4. 将显示存储库中所有本地分支的弹出窗口。
  5. 选择要删除的所有本地分支,然后单击“删除”。您可以添加前提条件以防止任何意外删除。在我的情况下,他们都是松散挂起的引用,没有真正的知识,他们被合并到其他分支。因此,我选择“不执行合并检查”来继续执行操作,否则将在前提条件下失败。
  6. 希望IntelliJ提供一个自动保存这类分支的选项。或者它已经存在,我想念它。无论如何,这种方法为我节省了一些时间。 Delete local branches conveniently from git GUI