[英]EGit: Pruning Remote Tracking Branches that have been Deleted on the Remote Repo
我正在与开发团队一起使用EGit(用于Eclipse)。 我们已经为新工作创建了许多feature
并fix
分支,然后在完成后将它们合并到我们的release
分支中。 在它们合并到正确的release
分支之后,通常会删除这些临时分支以保持远程仓库清理。
我注意到当这些分支被删除时,我将从我们的远程仓库中取出,但是EGit不会从我的远程跟踪视图中删除它们。 我的远程跟踪视图仍将显示已删除的分支,这些分支不再位于远程仓库上(并且没有迹象表明它们已被删除)。 我的远程跟踪视图反映实际仓库的唯一方法(我发现)是手动删除所有远程跟踪分支(突出显示和删除),然后再次获取它们。 这似乎非常迂回,特别是因为您可以通过命令行修剪远程分支,如下所示:
git remote prune origin
基本上,我想知道的是,如果有一种方法可以配置/使EGit在远程跟踪分支发生变化时执行此修剪(在我获取之后)。 这是我origin
远程上的当前提取配置:
更新2014年3月:正如cheshire的回答所提到的, EGit 3.3补充说了修剪功能。
您可以在JGit中 查看此Gerrit代码审查中引入的所述功能(并在此处进行测试 )
git config
提到的条目fetch.prune
可以添加到您的Egit配置中:
原始答案(2013年3月)
当远程跟踪分支发生变化(我获取后)时,EGit执行此修剪。
从来没听说过。
更一般地,在使用挂钩无法在客户端进行每次提取之后执行任何操作。
它已被请求 ,并且仅在服务器端实现了一点: 钩子post-upload
(在获取后运行),但出于安全原因在多用户环境中被删除。
最近的EGit 3.3版本引入了修剪支持。
您可以将fetch.prune
或remote.<yourremotename>.prune
密钥添加到gitconfig并将其设置为true
。 当您使用EGit进行提取时,这将自动修剪在中央存储库中删除的分支。
在git-Settings中设置fetch.prune = true可以解决问题。 如果在“存储库设置”中执行此操作,则可以为每个存储库区分此设置。 如果要对每个存储库使用此设置,最好在用户设置中输入fetch.prune = true。 因此,您不必为每个存储库重复它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.