Я создал ветку с "git checkout -b mybranch". Кажется, что-то пошло не так, и теперь я не могу удалить его, используя "git branch -D mybranch". Он говорит: ошибка: ветвь "mybranch" не найдена.
Удалить сломанную ветвь в git
Ответ 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>
для удаления на пульте дистанционного управления.
И все готово.:)