Git говорит, что удаленная ссылка не существует, когда я удаляю удаленную ветку

Я побежал git branch -a

* master
  remotes/origin/test
  remotes/origin/master

Я хочу удалить удаленную ветвь

Я пробовал

git push origin --delete remotes/origin/test

Я получил

Ошибка: невозможно удалить 'remotes/origin/test': remote ref не существует

Как это не существует?

Я сделал git branch -a, и я увидел его в списке.

Я что-то пропустил?

Ответ 1

Команда git branch -a показывает удаленные ветки, существующие в вашем локальном репозитории. Это может показаться немного запутанным, но чтобы понять это, вы должны понимать, что существует разница между удаленной ветвью и веткой, которая существует в удаленном репозитории. Удаленные ветки - это локальные ветки, которые относятся к ветвям удаленного репозитория. Таким образом, множество удаленных веток представляет состояние удаленного репозитория.

Обычный способ обновления списка удаленных веток - использовать git fetch. Это автоматически получает обновленный список ветвей с удаленного сервера и настраивает удаленные ветки в локальном репозитории, а также извлекает любые объекты фиксации, которые могут отсутствовать.

Однако по умолчанию git fetch не удаляет удаленные ветки, которые больше не имеют параллельной ветки на пульте дистанционного управления. Для этого вам явно нужно обрезать список удаленных ветвей:

git fetch --prune

Это автоматически избавится от удаленных веток, которые больше не существуют на пульте дистанционного управления. Впоследствии git branch -r покажет вам обновленный список ветвей, которые действительно существуют на пульте дистанционного управления: и те, которые вы можете удалить, используя git push.

При этом, чтобы использовать git push --delete, вам нужно указать имя ветки в удаленном репозитории; а не название удаленной ветки. Итак, чтобы удалить ветвь test (представленную вашей удаленной ветвью origin/test), вы должны использовать git push origin --delete test.

Ответ 2

Значение remotes/origin/test заключается в том, что у вас есть ветвь с именем test на удаленном сервере origin. Таким образом, команда будет

git push origin --delete test

Ответ 3

Там есть ярлык для удаления ветки в начале координат:

git push origin :<branch_name>

То же самое, что и при выполнении git push origin --delete <branch_name>

Ответ 4

git push origin --delete yourBranch

Ответ 5

  • получить список удаленных ветвей
git fetch # synchronize with the server
git branch --remote # list remote branches
  1. вы должны получить список удаленных ветвей:
origin/HEAD -> origin/master
origin/develop
origin/master
origin/deleteme
  1. Теперь мы можем удалить ветку:
git push origin --delete deleteme

Ответ 6

Удобный однострочный шрифт для удаления ветвей, отличных от "хозяина", из источника:

git branch --remotes | grep -v 'origin/master' | sed "s/origin\///" | xargs -i{foo} git push origin --delete {foo}

Убедитесь, что вы понимаете последствия запуска этого, прежде чем делать это!

Ответ 7

Учитывая, что удаленная ветвь является удаленным/исходным/тестовым, вы можете использовать два способа:

git push origin --delete test

и

git branch -D -r origin/test

Ответ 8

git branch -a будет отображать ветки в локальном, а не в ветвях вашего пульта.

И ошибка error: unable to delete 'remotes/origin/test': remote ref does not exist означает, что у вас нет ветки в этом имени на вашем удаленном компьютере, но ветвь существует в вашем локальном.

Ответ 9

Для меня это сработало $ ▶ git branch -D -r origin/mybranch

подробности

$ ▶ git branch -a | пульт дистанционного управления grep mybranch/origin/mybranch

$ ▶ git branch -r | grep mybranch origin/mybranch

$ ▶ git branch development * функция/предварительная -D разработка

$ ▶ git push origin - -D ошибка elete mybranch: невозможно удалить "mybranch": ошибка удаленного ref не существует: не удалось отправить некоторые ссылки на "[email protected]: config/myrepo.git"

$ ▶ git branch -D -r origin/mybranch Удалено удаленное ответвление origin/mybranch (было 62c7421).

$ ▶ git branch -a | grep mybranch

$ ▶ git branch -r | grep mybranch

Ответ 10

git push origin --delete origin/test 

должен работать также