Не удается удалить удаленную ветвь, созданную непреднамеренно
$ 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, но это не работает
Любая помощь.
Ответы
Ответ 1
У меня была эта ошибка (сверху):
Спасибо. Фактически я заметил это решения и попробовал раньше. Но это дает следующую ошибку... $ git push origin: heads/socail Введите парольную фразу для ключа '/h/.ssh/id_rsa': ошибка: неспособный нажать на неквалифицированный назначение: головы/ параметр refspec не соответствует существующий ref на пульте дистанционного управления и не начинается с refs/, и мы не можем угадать префикс на основе источника ref. Ошибка: не удалось нажать несколько ссылок на 'git @xxxxxx.git' - Himel 24 мая 10 в 9:37
Казалось, он смутился о том, удалил ли я его удаленно. Я работал вокруг него так:
git push origin HEAD:branch_to_delete
git push origin :branch_to_delete
Это сработало для меня. Использование: git версия 1.7.3.1.msysgit.0.
Ответ 2
git push origin :social
Но вам также нужно удалить локально, до или после.
Ответ 3
Как упоминалось @Josh в комментарии к Nathan McDaniel Answer, это, вероятно, связано с ветвь больше не существует в удаленном репозитории. Это приведет к тому, что 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
сообщите, какие ветки будут обрезаны, но на самом деле их не обрезать.
Ответ 4
В приведенной ниже команде удаляется ветка удаленного отслеживания, но не ветка, которая существует на удаленном
$ git branch -d -r origin/social
Deleted remote branch origin/social (was 26f6f61).
Удаление удаленной ветки:
git push origin :social
Это автоматически удалит удаленную ветку отслеживания i.e remotes/origin/social.
Ответ 5
Удаление удаленных веток подробно описано в здесь.