git 刪除不存在對應遠端分支的本地分支

2021-07-01 18:25:00 字數 2738 閱讀 9713

問題描述是:我在遠端上建立了乙個分支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 ...