当我做git获取原点和原点有一个删除的分支,它似乎没有更新它在我的存储库。当我执行git branch -r时,它仍然显示origin/DELETED_BRANCH。

我该如何解决这个问题?


当前回答

您需要完成以下操作

git fetch -p

-p或——prune参数将更新远程分支的本地数据库。

其他回答

如果git fetch -p origin因为某些原因不起作用(比如因为原始repo不再存在或者你无法到达它),另一个解决方案是删除存储在本地分支上的信息,从repo的根执行:

rm .git/refs/remotes/origin/DELETED_BRANCH

或者如果它存储在文件.git/ packages -refs中,则删除相应的行,如

7a9930974b02a3b31cb2ebd17df6667514962685 refs/remotes/origin/DELETED_BRANCH

您需要完成以下操作

git fetch -p

为了同步你的分支列表。git手册说

- p,修剪 获取后,删除远程上不再存在的任何远程跟踪引用。如果仅仅因为默认的标记自动跟踪或由于——Tags选项而获取标记,则不受修剪的影响。但是,如果由于显式的refspec(在命令行上或在远程配置中,例如如果远程是用——mirror选项克隆的)而获取标记,那么它们也会受到修剪。

我个人喜欢使用git fetch origin -p——progress,因为它显示了一个进度指示器。

您需要完成以下操作

git fetch -p

-p或——prune参数将更新远程分支的本地数据库。

从http://www.gitguys.com/topics/adding-and-removing-remote-branches/

当有人从远程存储库中删除一个分支后,git将不会删除 操作时自动删除本地存储库分支 不拉不取。但是,如果用户想拥有全部 跟踪从本地存储库中删除的分支 在远程存储库中删除,他们可以输入: Git远程删除源文件

注意,git fetch -p的-p参数实际上表示“修剪”。 无论您选择哪种方式,都将从本地存储库中删除不存在的远程分支。

对于git和Apple git更新于版本2。X这对我来说很管用:

git remote prune origin