我使用IntelliJ(2016.1.3)和GIT集成插件(8.1)。 在我使用IntelliJ期间,我检查了多个分支。现在这些分支从GIT中删除(在每次拉取请求之后我们删除它们)。
从现在开始,我检出的每个分支都出现在我的GIT视图中,来自Intellij(通过VCS> Git>分支......),见下:
有一种方法可以删除它们:做到这一点...... 一个接一个!但如果有很多分支(比方说一百......),那肯定会变得单调乏味......
问题是: 你知道在IntelliJ中是否有一种从这个视图中删除所有孤立本地分支的简单方法吗?
谢谢:)
编辑:我找到了一种方法来删除它们,但是在另一个工具中:" Git Gui"。当您从那里删除它时,它也会在IntelliJ中删除。并且您可以一次删除多个分支。答案 0 :(得分:5)
远程跟踪分支很容易与普通的Git分支混淆。远程跟踪分支以remotes/
开头,与remotes/origin/branch1
一样,尽管Git允许您省略remotes/
作为简写,因此您也可以简单地remotes/origin/branch1
引用origin/branch1
1}}。但这些都不是正常的分支。您无法承诺或直接检查它们。如果你试图检查它们,Git将检查一个分离的HEAD,否则它将自动创建一个与远程分支同名的新本地分支,例如branch1
。除非告诉Git明确删除它,否则永远不会删除这个新的本地分支。
正在发生的事情是双重的:
您需要确保Git 修剪远程跟踪分支(remotes/origin/branch1
等)。默认情况下不会。有关如何执行此操作,请参阅this question on pruning remote tracking branches。基本上是git fetch -p origin
或git remote prune origin
。
当您签出分支以对其进行处理时,您创建了一个与远程跟踪分支同名的本地分支。除非您手动执行此操作,否则永远不会删除本地分支branch1
,即使远程跟踪分支remotes/origin/branch1
已被修剪,如果在远程服务器上删除了branch1
,也会执行此操作。
您可以使用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插件无法实现此目标。
答案 5 :(得分:0)
我尝试了@Guillaume M的更新答案,对我来说效果很好。我有许多本地分支(在我的IntelliJ上),当他们的远程对应物被远程合并和删除时,它们松散了。在一段时间内没有做任何家务管理,悬挂的参考文件不断堆积。所以,基本上这些是孤儿没有跟踪任何远程分支。
这是我为清理它们所做的 - 使用'Git Gui'删除孤立本地分支并刷新/重启(虽然不是强制性的)IntelliJ。 Git gui对于这种批量删除分支似乎有点方便。