Как удалить удаленный источник / ссылки / головы / мастера - PullRequest
18 голосов
/ 03 февраля 2011

Не спрашивайте меня, как, но мне удалось случайно получить следующие удаленные ветки в репозитории 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.

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

Ответы [ 3 ]

39 голосов
/ 03 февраля 2011

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

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

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

git ls-remote origin

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

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

16 голосов
/ 07 февраля 2011

Решение было удалить ветку refs/heads/refs/heads/master

git push origin :refs/heads/refs/heads/master
4 голосов
/ 17 марта 2012

Это

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

вместо

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

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

...