Когда я использую автозаполнение bash в Git, он продолжает показывать мне ветки старых пультов, которых у меня больше нет. Когда я делаю это, git branch -la
он показывает старые пульты и ветки, а не показывает git branch -l
. А ls .git/refs/remotes/
также показывает их. Однако их нет в моем .git / config, и они не отображаются при запуске git remote show
.
Итак, как мне избавиться от них, потому что мой список автозаполнения сейчас слишком длинный.
Я уже пробовал:
git reflog expire --expire=now --all
git gc --prune=now
rm .git/refs/remotes/theoldremote
git remote prune theoldremote
Я также знаю, что могу просто повторно клонировать репо, но это просто обман ;-)
git remote rm
Теперь (git 2.0.1, июнь 2014 г.) сначала удалите ветки удаленного отслеживания. Это должно помочь избежать очистки старых веток. Смотрите мой ответ нижеОтветы:
Git не удаляет (локальные) ветки удаленного отслеживания автоматически, если ветка была удалена в удаленном репозитории. Кроме того, до V2.0.1 ветки удаленного отслеживания в некоторых случаях не удалялись, когда вы удаляли пульт из конфигурации git (см. Ответ VonC).
Чтобы удалить устаревшие ветки удаленного отслеживания (ветки, которые были удалены в удаленном репозитории) для одного из ваших удаленных репозиториев, запустите
Чтобы процитировать страницу руководства или
git remote
:Однако из вашего вопроса кажется, что вы удалили вручную
.git/refs/remotes/theoldremote
, поэтому Git больше не знает об удаленном репозитории, к которому принадлежали ветки удаленного отслеживания. Это не то, как вы должны это делать.Обычный способ удалить удаленный репозиторий - запустить
Это удалит пульт из вашего
.git/config
и удалит ветки удаленного отслеживания.Если вы просто удалите каталог
.git/refs/remotes/
, ветки останутся позади. Тогда вам нужно будет удалить их вручную:Вам нужна возможность
-r
удалить удаленную ветку.источник
fatal: 'kolichikov' does not appear to be a git repository
.git gc
, что вызывает git prune ». Однако обратите внимание, чтоgit gc
это несовместимо с--dry-run
.git branch -rd <remote>/<branchname>
было то, что я искал. Спасибо!я использую
удалить ветку с сервера.
удалить удаленные ссылки, которые больше не существуют на сервере
источник
fatal: 'kolichikov' does not appear to be a git repository
Примечание: хотя ответом является git remote prune, знайте, что, начиная с git 2.0.1 (25 июня 2014 г.), a
git remote rm
начинается с удаления ветвей удаленного отслеживания .Надеюсь, вам не придется очищать старые ветки после
git remote rm
.См совершить b07bdd3 по Jens Линдстрем (
jensl
)remote rm
: удалить удаленную конфигурацию как последнююНо если вам нужно,
git fetch
может быть достаточно простого , если вы сначала установили:источник
Ничего не нажимайте на ветку, чтобы удалить ее:
git push remote :remote_branch
Это где-то в документации, но это не совсем очевидно.
Или я неправильно понял ваш вопрос?
источник
git
Хорошо, я понял. Проблема заключалась в том, что пультов больше не существует, но они есть где-то в базе данных git. Я повторно добавил пульты, затем сделал
После этого они исчезают из списка. Как-то я не удалил их правильно раньше, чем предполагаю.
источник
Я запутался, когда удаленные ветки, которые были удалены на стороне сервера, все еще появлялись, когда я запускал:
Следующая команда исправила это для меня (в git версии 2.25.0):
источник