Удаление локальной ветки с помощью Git

135

Я погуглил, и на эту тему есть несколько очень длинных тем, и ни одна из них, похоже, не помогает. Я думаю, что я делаю что-то не так. У меня ветка называется Test_Branch. Когда я пытаюсь удалить его рекомендованным способом, я получаю следующую ошибку:

Невозможно удалить ветку «Test_Branch», извлеченную в «[расположение каталога]».

Другой информации я не получаю. Я могу легко удалить удаленную ветку, но локальная ветка никуда не денется.

Боб Уэйкфилд
источник
Кстати, я новичок в Git. Пользуюсь только последние несколько дней. Прошел несколько онлайн-курсов и прочитал несколько книг, но ответов, похоже, тоже нет.
Боб Уэйкфилд
Если вы выполняете git branch, о чем это говорит?
coredump
19
На картинке вот что происходит: publicdomainpictures.net/pictures/10000/velka/…
coredump
ветка git дает мне * Мастер Test_Branch
Боб Уэйкфилд
Звездочка

Ответы:

245

Переключитесь на другую ветку и удалите Test_Branch, как показано ниже:

$ git checkout master
$ git branch -d Test_Branch

Если приведенная выше команда выдает ошибку - The branch 'Test_Branch' is not fully merged. If you are sure you want to delete itи вы все еще хотите ее удалить, вы можете принудительно удалить ее, используя -Dвместо-d :

$ git branch -D Test_Branch

Чтобы удалить также Test_Branchс удаленного, выполните:

git push origin --delete Test_Branch
Арпит Аггарвал
источник
35
Меня привлекло переключение веток - хороший улов! Вы не можете удалить ветку, если вы в ней активны. ;-)
SliverNinja - MSFT
2
Если вы попробуете несколько разных проверок и все равно получите то же сообщение, посмотрите на вывод git status, или git branch; если вы перебазируете Test_branch, то простая проверка другой ветки / фиксации не исправит этого. Вместо git rebase --abortэтого git checkout --detachи наконецgit branch -D Test_branch
дроид
3
Еще одно свидетельство того, что git означает «git ужасен». Чем больше я его использую, тем через большее количество этих нелепых обручей придется прыгать. Тем более, что вы, вероятно, захотите вернуться к той же ветке.
user949300
А что, если кто-то получит это взамен при попытке сменить ветку? error: you need to resolve your current index firstа они просто хотят УЙТИ? EDIT - Решение: git reset --; git checkout -D [branch_name]Уф ..
Пол
21

Вероятно, у вас есть Test_Branch, и вы не можете удалить его, пока это ваша текущая ветка. Проверьте другую ветку, а затем попробуйте удалить Test_Branch.

Рэнди Леберкнайт
источник
14

Пробежался сегодня, и переход на другую ветку не помог. Оказалось, что каким-то образом информация о моем рабочем дереве была повреждена, и было рабочее дерево с тем же путем к папке, что и мой рабочий каталог, с HEADуказанием на ветку ( git worktree list). Я удалил .git/worktree/папку, которая ссылалась на нее, и git branch -dработала.

jinxcat2008
источник
3

Если вы создали несколько рабочих деревьев с помощью git worktree , вам нужно будет запустить его, git pruneпрежде чем вы сможете удалить ветку

dkniffin
источник
3
более конкретно, вам нужно будет использоватьgit worktree prune
Sergioet
но сначала прочтите, что делает git prune - может привести к потере данных
sesquipedalias
1

Это сработало для меня ...
Я удалил папки в папке .git / worktrees, а затем попробовал "git delete -D branch-name".

ВАСУ
источник
1

В моем случае остались незафиксированные изменения из предыдущей ветки. Я использовал следующие команды, а затем сработало удаление.

git checkout *

мастер проверки git

git ветка -D

Санкар Натараджан
источник
0

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

В моем случае я выбрал «Test_Branch» в Visual Studio и пытался удалить «Test_Branch» из Sourcetree (Git GUI). И получало сообщение об ошибке ниже.

Невозможно удалить ветку «Test_Branch», извлеченную в «[расположение каталога]».

Переключился на другую ветку в Visual Studio и смог удалить Test_Branch из Sourcetree.

Я надеюсь, что это поможет тем, кто использует Visual Studio и Sourcetree .

Правин Митта
источник