Удалить сломанную ветвь в git

Я создал ветку с "git checkout -b mybranch". Кажется, что-то пошло не так, и теперь я не могу удалить его, используя "git branch -D mybranch". Он говорит: ошибка: ветвь "mybranch" не найдена.

Ответ 1

Если git branch -D действительно не работает, то единственным вариантом является его переключение и редактирование состояния выгрузки git самостоятельно. Вы должны перейти в корневую директорию вашего выписки (где находится каталог .git) и

  • edit .git/packed-refs; если вы видите строку с именем вашей ветки, то удалите ее
  • загляните в .git/refs/heads для файла с именем после вашего ветки; если вы его видите, удалите его

Ответ 2

Я использовал git update-ref -d refs/heads/<branch name>, чтобы исправить эту проблему. Предположительно, это делает то же самое, что предлагает Rup в выбранном ответе, за исключением того, что он связан с Git CLI.

Ответ 3

Вам явно не нужно удалять ветвь, которая не существует. Используйте git branch, чтобы просмотреть список ветвей, если его там нет, тогда нет ветки, и вам не нужно ее удалять. В противном случае обязательно введите имя правильно и git branch -D должно работать.

Тем не менее вам не нужно заботиться о сломанной ветке, которая может быть все еще вокруг, но недоступна. Филиалы в Git на самом деле простые 40-байтовые файлы, поэтому на самом деле вам не о чем беспокоиться.

Ответ 4

У меня была та же проблема. Когда я выполнил команду git branch, ветка была в списке ветвей, но я не смог ее удалить.

Решение в моем случае было простым и немного неожиданным: я проверил разбитую ветвь git checkout broken_branch (да, это сработало), затем я проверил обратно на мастер и... снова выполнил git branch -D broken_branch.

Ответ 5

Если имя ветки содержит специальные символы, оно должно быть указано:

$ git branch -D 'ENH-Adding-unit-``julian``-to-``to_datetime``'

Ответ 6

У меня та же проблема git branch -d <branch_name> не работает, И я ничего не нашел в .git/packed-refs и .git/refs/heads, но я получил файлы в

.git/ссылки/пультов ДУ/происхождение

с именем ветвей, которые я не смог удалить как локально, так и удаленно. Но после удаления файлов с помощью branch_name, который я хотел удалить, он не показывался в локальном.

Чтобы удалить его при удаленном использовании

git fetch -p origin

Опция -p --prune сообщает, что перед извлечением удалите ссылки удаленного слежения, которые больше не существуют на пульте дистанционного управления. Затем используйте команду

git push origin :<branch_name_you_was_unable_to_delete>

для удаления на пульте дистанционного управления.

И все готово.:)