Невозможно удалить удаленную ветку, созданную непреднамеренно - PullRequest
29 голосов
/ 24 мая 2010
$ git branch -a
* SocialAct
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/SocialAct
  remotes/origin/social

Я хочу удалить удаленную ветку "remotes / origin / social" и применить следующую команду:

$ git branch -d -r origin/social
Deleted remote branch origin/social (was 26f6f61).

Но я понятия не имею, как внести эти изменения удаленно, чтобы ветвиудаляются из источника, и каждый может видеть изменения.Я пробовал git push, но это не работает

Любая помощь.

Ответы [ 5 ]

45 голосов
/ 09 февраля 2011

У меня была эта ошибка (сверху):

Спасибо. На самом деле я это заметил Решение и пробовал ранее. Но это выдает следующую ошибку ... $ git push Происхождение: возглавляет / socail Введите пароль для ключа '/h/.ssh/id_rsa': ошибка: не может подтолкнуть к неквалифицированному назначение: головы / socail пункт назначения refspec не совпадает с существующая ссылка на пульте ни начинается с refs /, и мы не можем угадать префикс, основанный на исходном исх. ошибка: не удалось отправить некоторые ссылки на 'git@xxxxxx.git' - Гимел 24 мая 10 в 9: 37

Казалось, я запутался в том, действительно ли я удалил его удаленно. Я работал над этим так:

git push origin HEAD:branch_to_delete

git push origin :branch_to_delete

Это сработало для меня. Использование: git version 1.7.3.1.msysgit.0 .

7 голосов
/ 21 сентября 2012

Как упомянуто @ Josh в комментарии к Ответу Натана МакДаниэля , это, вероятно, связано с тем, что в удаленном репозитории больше нет ветки. Это заставляет git branch -a по-прежнему отображать ветвь под origin (или как вы ни называли этот конкретный удаленный), но удалить ветвь в удаленном хранилище невозможно, потому что он больше не существует на удаленном. Это могло быть вызвано удалением ветви на удаленном компьютере с другого компьютера (помимо того, что git pull и git fetch не удаляют ссылки на удаленные ветви, которые были удалены из удаленного хранилища).

Исправление

Просто удалите все ветви удаленного отслеживания, которые уже были удалены из удаленного репозитория с помощью git remote prune:

git remote prune REMOTENAME

Например, если имя вашего пульта - origin (вероятно), приведенная выше команда будет выглядеть так:

git remote prune origin

Из документации, поставляемой с git:

git remote prune [-n | --dry-run] <name>

Удаляет все устаревшие ветви удаленного отслеживания в <name>. Эти устаревшие ветви уже удалены из удаленного репозитория, на который ссылается <name>, но все еще доступны локально в "remotes /".

С опцией --dry-run сообщите, какие ветви будут удалены, но на самом деле не сокращайте их.

7 голосов
/ 24 мая 2010

git push origin :social
Но вам также нужно удалить локально, до или после.

2 голосов
/ 12 августа 2014

Следующая команда удалит удаленную ветвь отслеживания, но не ветку, существующую на удаленной

$ git branch -d -r origin/social
Deleted remote branch origin/social (was 26f6f61).

Чтобы удалить удаленную ветку:

git push origin  :social

Это автоматически удалит ветку удаленного отслеживания, т.е. удаленные / origin / social.

0 голосов
/ 24 мая 2010

Удаление удаленных веток подробно описано в здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...