我正在寻找一种安全的方法来删除所有这样的分支。从描述中看来,
git remote prune origin
正好可以做到这一点。但它似乎对我不起作用。根据以下行为,分支
encrdb_init
已从 remote
中删除,但 git remote prune origin
命令似乎没有修剪它。 我不确定为什么。$ git branch
bugfix/encrdb_init
* master
$
$ git remote prune origin
$
$ git checkout bugfix/encrdb_init
Switched to branch 'bugfix/encrdb_init'
Your branch is based on 'origin/bugfix/encrdb_init', but the upstream
is gone.
(use "git branch --unset-upstream" to fixup)
$
$ git branch
bugfix/encrdb_init <<< shouldn't this have been pruned?
* master
供参考,以下是git remote show origin
的输出结果:
$ git remote show origin
* remote origin
Fetch URL: <redacted>
Push URL: <redacted>
HEAD branch: master
Remote branches:
SSL_test tracked
addNodeFix tracked
autoprefix tracked
release/1.0.2 tracked
Local branches configured for 'git pull':
bugfix/encrdb_init merges with remote bugfix/encrdb_init
master merges with remote master
release/1.0.2 merges with remote release/1.0.2
Local refs configured for 'git push':
master pushes to master (up to
date)
release/1.0.2 pushes to release/1.0.2 (up to
date)
$ git branch -vv
* bugfix/encrdb_init 341a078c [origin/bugfix/encrdb_init: gone] <redacted comment>`
git remote prune origin --dry-run
命令检查过期的分支。 - Shubham Khatrigit remote prune origin --dry-run
的输出为空。 - saketrpbugfix/encrdb_init
是一个本地分支(分支名称中可以有斜杠)。 - VonCremote
中的分支,但没有删除本地分支,导致它们悬空。看起来这个命令不会删除本地分支,即使是那些上游已经不存在的分支。 - saketrpgit remote
的全部意义:在remotes
命名空间中更新或删除。而不是篡改本地分支。 - VonC