問題描述 :
查看所有分支使用命令git branch --all
feature-tmp
feature-tmp-no-ad
feature-tools
feature-tools-dev
feature-trend
feature-trend-paint
feature-wangcai
feature-wangcai-no-ad
remotes/origin/HEAD -> origin/feature-release
remotes/origin/cherry-pick-3afe883a
remotes/origin/dev-hhz
remotes/origin/feature-add-newvideo
remotes/origin/feature-add-video
remotes/origin/feature-buy-lottery
remotes/origin/feature-changepassword
remotes/origin/feature-comment
remotes/origin/feature-dev-bussinus
發現當前遠程分支未包含:
remotes/origin/feature-buy-lottery
remotes/origin/feature-changepassword
remotes/origin/feature-comment
remotes/origin/feature-dev-bussinus
這四個分支已經從遠程分支中刪除 但是 本地分支並不知道當前這幾個遠程分支是否被刪除 下面我們可以使用命令:
git remote show origin
看到當前我們本地代碼庫所有遠程分支:
feature-tools tracked
feature-tools-dev tracked
feature-wangcai tracked
feature-wangcai-no-ad tracked
master tracked
refs/remotes/origin/cherry-pick-3afe883a stale (use 'git remote prune' to remove)
refs/remotes/origin/dev-hhz stale (use 'git remote prune' to remove)
refs/remotes/origin/feature-add-newvideo stale (use 'git remote prune' to remove)
refs/remotes/origin/feature-add-video stale (use 'git remote prune' to remove)
refs/remotes/origin/feature-buy-lottery stale (use 'git remote prune' to remove)
現在我們可以看到 :
stale (use ‘git remote prune’ to remove)
這樣的標註 這代表我們遠程已經刪除當前這條分枝 但是本地代碼庫並不知道,所以我們要進行的操作就是按照提示 刪除當前這些無用的未被tracked 的遠程分枝。
使用:
git remote prune origin
就會出現如下結果:
Pruning origin
URL: [email protected]:root/wangcai-android-root-project.git
* [pruned] origin/cherry-pick-3afe883a
* [pruned] origin/dev-hhz
* [pruned] origin/feature-add-newvideo
* [pruned] origin/feature-add-video
* [pruned] origin/feature-buy-lottery
* [pruned] origin/feature-changepassword
* [pruned] origin/feature-comment
好了,目前我們工作基本完活兒。
現在使用:
git fetch
git remote show origin
這兩條命令可以看到我們的本地代碼倉庫乾淨啦哈哈。
分析一下出現原因:
之前從遠程庫拉取過所有分枝,
可能之後被遠程的某些分支被其他人在GitLab刪除了,
你用 Git branch -a 也是不能看出它們是否已被刪除的
所以在本地會有很多 無用的 沒有被tracked 的 分支 ,
用 it remote show origin 命令可以看到
這些分枝會被標記成 stale (use 'git remote prune' to remove)。
所以就出現了今天我們說到的問題