EGit:修剪远程回购中已删除的远程跟踪分支

时间:2013-03-04 20:53:55

标签: eclipse git egit git-remote

我正在与开发团队一起使用EGit(用于Eclipse)。我们为新工作创建了大量featurefix分支,然后在完成后将它们合并到我们的release分支中。在它们合并到正确的release分支之后,通常会删除这些临时分支以保持远程仓库的清洁。

我注意到当这些分支被删除时,我将从我们的远程仓库中获取,但是EGit不会从我的远程跟踪视图中删除它们。我的远程跟踪视图仍将显示已删除的分支,这些分支不再位于远程仓库上(并且没有迹象表明它们已被删除)。我的远程跟踪视图反映实际仓库的唯一方法(我发现)是手动删除所有远程跟踪分支(突出显示和删除),然后再次获取它们。这似乎非常迂回,特别是因为您可以通过命令行修剪远程分支,如下所示:

git remote prune origin

基本上,我想知道的是,如果有一种方法可以配置/使EGit在远程跟踪分支更改时(在我获取之后)执行此修剪。这是我当前的fetch配置我的origin遥控器:

enter image description here

3 个答案:

答案 0 :(得分:35)

2014年3月更新:正如cheshireanswer所述,EGit 3.3添加了修剪功能。

您可以在Gerrit code review(和JGit

中看到此tested here中介绍的所述功能

entry fetch.prune中提到的git config可以添加到您的Egit配置中:

https://wiki.eclipse.org/images/f/f8/RepositoryConfigurationSettings.png


原始答案(2013年3月)

  

当远程跟踪分支发生变化(我获取后)时,EGit执行此修剪。

不是我知道的。

更一般地说,在使用挂钩无法在客户端进行每次提取后执行任何操作 它有been requested,并且仅在服务器端实现了一点:hook post-upload(在获取后运行),但出于安全原因在多用户环境中被删除。

答案 1 :(得分:11)

最近EGit 3.3 release引入了修剪支持。

您可以向gitconfig添加fetch.pruneremote.<yourremotename>.prune密钥,并将其设置为true。当您使用EGit进行提取时,这将自动修剪在中央存储库中删除的分支。

答案 2 :(得分:0)

在git-Settings中设置fetch.prune = true解决了该问题。 如果在“存储库设置”中执行此操作,则可以为每个存储库更改此设置。 如果要对每个存储库使用此设置,则最好在用户设置中放入fetch.prune = true。因此,您不必为每个存储库重复此操作。