【发布时间】:2018-07-27 00:00:26
【问题描述】:
这对我来说是一个常见的用例,我克隆一个存储库,签出一个分支,进行一些代码更改,进行多次提交,然后当它稳定时,我推送到远程,最终分支被合并并删除,我只剩下一个本地分支,上游消失了。
我一直在寻找删除所有此类分支的安全方法。从描述来看,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检查陈旧的分支 -
git remote prune origin --dry-run输出为空 -
@ShubhamKhatri 它返回空,因为没有更多的远程跟踪分支要删除。
bugfix/encrdb_init是一个 local (你可以在分支名称中使用斜杠) -
您应该会收到带有上述命令的
your stale remote-tracking branches列表。如果您没有收到它,则可能是其他问题
标签: git git-branch git-remote