2017-09-25 125 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