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

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

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

Bob Wakefield

Ответов: 10

Ответы (10)

Переключитесь на другую ветку и удалите Test_Branchследующим образом:

$ git checkout master
$ git branch -d Test_Branch

Если вышеуказанная команда выдает ошибку - Ветвь Test_Branch не полностью объединена. Если вы уверены, что хотите удалить его, но все же хотите удалить его, вы можете принудительно удалить его, используя -D вместо -d, как:

$ git branch -D Test_Branch

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

git push origin --delete Test_Branch

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

Если вы столкнетесь с этой проблемой, когда вы выполнили заказ, но не смогли удалить ветку и получили это сообщение об ошибке

"ошибка: невозможно удалить ветку" проблема-123 ", извлеченная в ....."

Затем проверьте ветку, в которой вы сейчас находитесь, используя git ветка

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

git checkout main или master

git branch -d имя-ветви git branch -D имя ветки git branch -D имя ветки --force

Сегодня мы столкнулись с этой проблемой для веток, о которых сообщает git branch -a, и выглядят примерно так: remotes / coolsnake / dev, т.е. локальные ссылки на «удаленные» ветки в зарегистрированный git remote add ... удаленные.

При попытке

git branch -d remotes/coolsnake/dev

вы получите ошибку : ветка 'remotes / coolsnake / dev' не найдена.

Здесь важно помнить, что это ссылки и ДОЛЖНЫ быть удалены с помощью

git update-ref -d remotes/coolsnake/dev

(согласно https://superuser.com/questions/283309/how-to-delete-the-git-reference-refs-original-refs-heads-master/351085#351085)

Потребовалось время, чтобы раскрыть мою ошибку, и только тот факт, что TortoiseGit мог это сделать, привел меня на правильный путь, когда я застрял. Google НЕ предоставил ничего полезного, несмотря на несколько разных подходов. (Нет, я нашел то, что мне было нужно, там также git: Как удалить локальную ветку ref?, которая НЕ отображалась, так как я забыл бит 'ref' о том, что эти ветки ссылки.)

Надеюсь, это поможет кому-то другому оторваться, когда они в одной лодке со мной, пытаясь фильтровать / выборочно удалять ветки в репо, где некоторые из них присутствуют из-за предыдущего git remote addкоманды.


В сценарии оболочки это может выглядеть так:

#! /bin/bash
#
# Remove GNU/cesanta branches so we cannot accidentally merge or cherrypick from them!
# 

# commit hash is first GNU commit
R=218428662e6f8d30a83cf8a89f531553f1156d25

for f in $( git tag -l ; git branch -a ) ; do 
    echo "$f"
    X=$(git merge-base $R "$f" ) 
    #echo "X=[$X]" 
    if test "$X" = "$R" ; then 
        echo GNU 
        git branch -D "$f" 
        git update-ref -d "refs/$f" 
        git tag -d "$f" 
        #git push origin --delete "$f" 
    else 
        echo CIVETWEB 
    fi
done

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

git checkout *    
git checkout master
git branch -D 

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

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

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

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

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

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

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

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

Most junior programmers that faced

Невозможно удалить ветку 'my-branch-name'

Потому что они уже находятся в этой ветке.

Нелогично удалять ветку, над которой вы уже работаете.

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

git checkout dev

git branch -d имя-ветки

без принудительное удаление, вы можете удалить эту ветку

2022 WebDevInsider