Подтвердить что ты не робот

Как удалить удаленное начало/refs/heads/master

Не спрашивайте меня, как мне удавалось случайно получить следующие удаленные ветки в репозитории git:

$ git branch -r
  origin/HEAD -> origin/master
  origin/master
  origin/refs/heads/master

Все указывают на одно и то же сообщение. Как удалить ненужный список для origin/refs/heads/master?

Я попытался сделать следующее

$ git push origin :refs/heads/master
error: dst refspec refs/heads/master matches more than one.

Но, как показано, это дает ошибку.

4b9b3361

Ответ 1

Решение заключалось в удалении ветки refs/heads/refs/heads/master

git push origin :refs/heads/refs/heads/master

Ответ 2

На самом деле это не ветка на удаленном компьютере - это просто локальная ссылка, которая утверждает, что представляет что-то на пульте, так же, как origin/master представляет главную ветвь на пульте дистанционного управления. Полное имя ref refs/remotes/origin/refs/heads/master. Все, что вам нужно сделать, чтобы удалить его:

git branch -r -d origin/refs/heads/master

Смутно возможно, что вам тоже удалось продвинуть это (но вам пришлось бы попробовать сделать это сложнее). Если бы вы это сделали, я бы просто перечислял ссылки источника:

git ls-remote origin

а затем, если там что-то глупо, используя git push origin :<refname>, чтобы избавиться от него.

P.S. Если этого не сделать для вас, вы захотите использовать git for-each-ref, чтобы просмотреть все ваши ссылки и, возможно, git ls-remote origin, чтобы увидеть все удаленные, и точно определить, какие вещи не принадлежат, с их полностью квалифицированными refnames.

Ответ 3

Это

git branch -r -d origin/ref/heads/master

вместо

git branch -r -d origin/refs/heads/master 

в части кода для удаления ветки. В коде есть разница в слово ref.