我刚从远处的Git存储库中删除了一个远程分支:
$ git push origin :obsoleteBranch
To git@<path_to_our_git_repo>/our_git_repo.git
- [deleted] obsoleteBranch
现在我的obsoleteBranch的本地副本现在正在追踪一个已经过去的分支&#34;:
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 -avv
和git checkout
的分支删除?
答案 0 :(得分:2)
git缓存有关远程分支的信息。您的同事之前必须已获取有关该过时分支的信息。这就是他看到它并能够检查提交的原因(提交也下载到他的本地仓库)。
git fetch --all --prune
应删除对远程分支的现在孤立引用。