文章目录[隐藏]

在开发过程中我们很多时候都需要将当前分支推送到远程仓库,该分支完成其使命之后再将其删除。

使用SourceTree的同学可能会发现SourceTree追踪的远端分支越来越多,许多已经删除的分支也还在,即使从origin拉取也不行。

虽然这些不影响正常的使用,但想快速的找到一个分支还是有点麻烦的,于是我们决定清除它们。

解决方法

  1. 进入对应目录下,使用git remote show origin命令查看本地仓库追踪远程仓库的状态
  2. 使用git remote prune origin清除所有失效的远程分支或根据提示删除特定失效分支
  3. 重启SourceTree即可。

在使用git进行版本控制时,经常会创建一些特性分支方便产品功能的开发和迭代,

在远程版本库创建了一个分支后,在本地可以使用

git remote update

可以在本地创建远程追踪分支,

但是,如果在远程版本库上删除了某一分支,该命令并不会删除本地的远程追踪分支,

这时候,有另一个命令

git remote prune

该命令可以删除本地版本库上那些失效的远程追踪分支,具体用法是,假如你的远程版本库名是 origin,则使用如下命令先查看哪些分支需要清理:

git remote prune origin --dry-run

可以看到, origin/a 和 origin/patch-1 两个远程分支已经失效,将会被清理,执行

git remote prune origin

这样,就完成了无效的远程追踪分支的清理工作。

需要注意,这里远程追踪分支批位于.git/refs/remote/origin 下的分支,如果有本地分支作为下游存在的话,还需要手动清理,从下图的命令可以看出,无效的远程追踪分支会以gone来标识

删除无效的本地分支命令:

git branch -d bug fix feature master4 master5 master6 origin/master7 master 8