Это обычный вариант использования для меня: я клонирую репозиторий, проверяю ветку, делаю некоторые изменения кода, делаю несколько коммитов, затем, когда он стабильный, я нажимаю на удаленный, в конечном итоге ветка объединяется и удаляется. и у меня остается местная ветка, в которой нет восходящего потока.
Я искал безопасный способ удалить все такие ветки. из описания казалось, что 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>`