2017-09-25 127 views
0

我只是删除远程分支从我们遥远的Git仓库:为什么Git检出这个被删除的分支没有抱怨?

$ git push origin :obsoleteBranch 

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

现在我的本地obsoleteBranch的副本是跟踪一个分支,是“水涨船高”:

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 '[email protected]<path...>/our_git_repo.git' 

到底哪里出问题了?

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

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

回答

2

git缓存有关远程分支机构的信息。您的同事必须先获取有关该废弃分支的信息。这就是为什么他看到它并能够检查提交(提交也下载到他的本地回购)。

git fetch --all --prune 

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

+0

是的,的确,我的同事曾经在本地获得有关过时分支的信息。你的解决方案很好。谢谢。 – Bludzee