我怎么能删除本地不存在的分支

时间:2016-03-11 10:03:38

标签: git

这些分支不再存在于远程原始服务器上,

然而我无法通过

删除

gb -D origin/feature/support-auto-backup 要么 gb -D remotes/origin/feature/add-discussion

我遇到了这种异常error: branch 'origin/feature/support-auto-backup' not found.

我怎么能删除所有这些?

在我的本地工作空间分支

  remotes/origin/feature/add-discussion
  remotes/origin/feature/add-ios-push-notification
  remotes/origin/feature/add-monitor-and-upstart-service
  remotes/origin/feature/add-ng-highcharts
  remotes/origin/feature/add-paypal-support
  remotes/origin/feature/move-status-watch-to-admin
  remotes/origin/feature/periodic_prices_rake_task
  remotes/origin/feature/personal-watch-list
  remotes/origin/feature/refactor_to_new_model
  remotes/origin/feature/structure_refactor
  remotes/origin/feature/support-auto-backup
  remotes/origin/feature/support-currency-conversion
  remotes/origin/feature/support_add_other_emails

1 个答案:

答案 0 :(得分:0)

简而言之,使用git fetch --prunegit fetch -p。这将从远程获取更新的分支列表,并更新远程分支的集合以反映该分支。如果您有不再存在的远程分支,那么这些分支将被删除。

The manual解释了这个选项:

  

<强> -p {
{1}}

     

获取后,删除遥控器上不再存在的所有远程跟踪引用。如果仅由于默认标记自动跟踪或由于--prune选项而提取标记,则不会对标记进行修剪。但是,如果由于显式--tags(在命令行或远程配置中,例如,如果使用refspec选项克隆了远程),则会获取标记,那么它们也受制于修剪。

如果要从本地存储库手动删除远程分支,则不能只使用--mirrorgit branch -d。默认情况下,它只允许您访问本地分支,但不能访问远程分支。但是,您可以使用git branch -D--remote选项删除分支。请注意,您只需指定远程分支名称,而不指定前导-r,例如:

remotes/

git branch手册中也解释了此功能:

  

git branch -d -r origin/feature/add-discussion -r一起使用以删除远程跟踪分支。请注意,如果远程存储库中不再存在远程跟踪分支,或者如果git fetch配置为不再获取它们,则删除它们才有意义。另请参阅git-remote[1]的prune子命令,了解清除所有过时的远程跟踪分支的方法。