問題描述是:我在遠端上建立了乙個分支feature,後來leader覺得不合理,就把遠端feature分支刪除,並又建立了乙個feature分支,這導致我在sourcetree上無法pull到最新的版本。
也假設出現這樣的情況:
我建立了本地分支b1並pull到遠端分支origin/b1
;
其他人在本地使用fetch或pull建立了本地的b1分支;
我刪除了origin/b1
遠端分支;
其他人再次執行fetch或者pull並不會刪除這個他們本地的b1
分支,執行git branch -a
也不能看出這個branch被刪除了,如何處理?
[root@test01 h2]#git remote show origin
* remote origin
fetch url: [email protected]:engine/h2.git
push url: [email protected]:engine/h2.git
head branch: master
remote branches:
h2-doc tracked
develop tracked
feature/test new (next fetch will store in remotes/origin)
feature/testpush new (next fetch will store in remotes/origin)
feature_ai tracked
feature_lyp tracked
master tracked
refs/remotes/origin/13123123 stale (use 'git remote prune' to remove)
refs/remotes/origin/logmodmodify stale (use 'git remote prune' to remove)
refs/remotes/origin/requestmodvideo stale (use 'git remote prune' to remove)
refs/remotes/origin/feature
stale (use 'git remote prune' to remove)
refs/remotes/origin/test-1111 stale (use 'git remote prune' to remove)
refs/remotes/origin/test/test stale (use 'git remote prune' to remove)
video tracked
local branches configured for 'git pull':
develop merges with remote develop
master merges with remote master
local refs configured for 'git push':
develop pushes to develop (local out of date)
master pushes to master (up to date)
這時候能夠看到feature是stale的,使用
git remote prune origin
可以將其從本地版本庫中去除。
[root@test01 h2]# git remote prune origin
pruning origin
url: [email protected]:engine/h2.git
* [pruned] origin/13123123
* [pruned] origin/logmodmodify
* [pruned] origin/requestmodvideo
* [pruned] origin/feature
* [pruned] origin/test-1111
* [pruned] origin/test/test
更簡單的方法是使用這個命令,它在fetch之後刪除掉沒有與遠端分支對應的本地分支:
git fetch -p
檢視全部分支
[root@test01 h2]
# git branch -a
* develop
master
remotes/origin/h2-doc
remotes/origin/head -> origin/master
remotes/origin/develop
remotes/origin/feature_ai
remotes/origin/feature_lyp
remotes/origin/master
remotes/origin/video
可以看到feature分支已經被刪除掉了
git 拉取遠端指定分支 pull本地不存在的分支
預設,git專案只有乙個分支,就是master,我們當然可以在本地建立多個分支,並推送到遠端git管理平台上,或者將遠端git管理平台上的其他分支拉取到自己電腦上。進入到專案根目錄,開啟命令列 終端,輸入指令,將會顯示該項目的本地的全部分支,其中 當前分支的前面有 號。git checkout b ...
遠端分支已經不存在的解決辦法
on branch feature 20180104 1709631 deletenotuse 1 your branch is based on origin feature 20180104 1709631 deletenotuse 1 but the upstream is gone.1 新建...
git 拉取指定分支 pull 本地不存在的分支
預設,git專案只有乙個分支,就是master,我們當然可以在本地建立多個分支,並推送到遠端git管理平台上,或者將遠端git管理平台上的其他分支拉取到自己電腦上。進入到專案根目錄,開啟命令列 終端,輸入指令,將會顯示該項目的本地的全部分支,其中 當前分支的前面有 號。git checkout b ...