Не удается удалить удаленную ветвь, созданную непреднамеренно

$ 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

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