为什么 Git 不抱怨地检查这个删除的分支?

Why does Git checkout this deleted branch without complaining?

我刚刚从我们遥远的 Git 存储库中删除了一个远程分支:

$ git push origin :obsoleteBranch

To git@<path_to_our_git_repo>/our_git_repo.git
 - [deleted]         obsoleteBranch

现在我的 obsoleteBranch 本地副本正在跟踪 "gone":

的分支
git branch -avv
* obsoleteBranch  dbef4b0 [origin/obsoleteBranch: gone] commit log...

到目前为止,一切顺利!

问题是我的同事仍然可以看到远程分支,甚至在 git fetch --all:

之后
$ git fetch --all
Fetching origin
......
$ git branch -avv
......
remotes/origin/obsoleteBranch dbef4b0 commit log...
......

Git 当我的同事试图检查已删除的分支时没有抱怨!

$ git checkout --track origin/obsoleteBranch

并且实际上在删除的分支曾经所在的位置进行结帐!

但是(证明远程分支确实没有了)我同事删不掉:

$ git push origin :obsoleteBranch
error: unable to delete 'obsoleteBranch': remote ref does not exist
error: failed to push some refs to 'git@<path...>/our_git_repo.git'

出了什么问题?

没有git fetch --all 完全同步我同事的仓库和远程仓库?

他 运行 应该使用什么命令,然后,为了让他的本地存储库考虑到 git branch -avvgit checkout 的分支删除?

git 缓存有关远程分支的信息。您的同事之前一定已经获取了有关该 obsoleteBranch 的信息。这就是他看到它并能够检查提交的原因(提交也下载到他的本地存储库)。

git fetch --all --prune

应该删除对远程分支的现在孤立的引用。