36

我正在与一组开发人员一起使用 EGit(用于 Eclipse)。我们一直在为新工作创建很多featurefix分支,然后release在完成后将它们合并到我们的分支中。在它们被合并到正确的release分支之后,这些临时分支通常会被删除以保持我们的远程仓库干净。

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

git remote prune origin

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

在此处输入图像描述

4

3 回答 3

52

2014 年 3 月更新:正如cheshire回答所提到的,EGit 3.3添加了修剪功能。

您可以在JGit中看到此Gerrit 代码审查中介绍的功能(并在此处测试

中提到的条目fetch.prunegit config可以添加到您的 Egit 配置中:

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


原始答案(2013 年 3 月)

EGit 在远程跟踪分支更改时执行此修剪(在我获取之后)。

从来没听说过。

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

于 2013-03-05T11:32:55.827 回答
14

最近的EGit 3.3 版本引入了修剪支持。

您可以在 gitconfig 中添加一个fetch.prune或一个remote.<yourremotename>.prune键并将其设置为true. 当您使用 EGit 获取时,这将自动修剪在中央存储库上删除的分支。

于 2014-03-07T21:42:58.107 回答
1

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

于 2019-03-26T18:19:12.633 回答