Видалення місцевої філії за допомогою Git


135

Я гуглив, і є кілька дуже довгих тем на цю тему, і жодна з них, здається, не допомагає. Я думаю, що роблю щось не так. У мене філія називається Test_Branch. Коли я намагаюся видалити його за допомогою рекомендованого методу, я отримую таку помилку:

Неможливо видалити гілку "Test_Branch", перевірену в "[location location]".

Іншої інформації, окрім цього, я не отримую. Я можу здути віддалену гілку легко, але місцева гілка не піде.


До речі, я абсолютно новий у Git. Використовується лише останні кілька днів. Пройшли декілька онлайн-курсів і прочитали кілька книг, і відповіді, здається, теж немає.
Боб Уейкфілд

Якщо ви страчуєте git branch, що це говорить?
coredump

19
У картині, це те , що відбувається: publicdomainpictures.net/pictures/10000/velka / ...
CoreDump

git branch дає мені * Test_Branch master
Bob Wakefield

Зірка повідомляє вам, в якій галузі ви зараз перебуваєте, це підтверджує те, що кажуть відповіді
coredump

Відповіді:


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

34
Перемикання гілок - це те, що мене отримало - хороший улов! Ви не можете видалити гілку, якщо ви активно в ній. ;-)
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]Phew ..
Павло

21

Напевно ви перевірили Test_Branch, і ви не можете видалити його, поки це ваша поточна гілка. Перегляньте іншу гілку, а потім спробуйте видалити Test_Branch.


14

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


3

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


3
точніше, вам потрібно буде скористатисяgit worktree prune
Sergioet

але почитайте, що робить git prune, по-перше - це може призвести до втрати даних
sesquipedalias

1

Це працювало для мене ...
Я видалив там папки в папці .git / worktrees, а потім спробував "git delete -D-назва гілки".


1

У моєму випадку відбулися неспроможні зміни від попередньої гілки, що затримуються навколо Я використав наступні команди, а потім видалив працював.

git checkout *

git checkout master

git гілка -D


0

Як і інші згадані, ви не можете видалити поточну гілку, в якій ви працюєте.

У моєму випадку я вибрав "Test_Branch" у Visual Studio і намагався видалити "Test_Branch" з Sourcetree (Git GUI). І отримував нижче повідомлення про помилку.

Неможливо видалити гілку "Test_Branch", перевірену в "[location location]".

Переключено на іншу гілку в Visual Studio і зміг видалити "Test_Branch" з Sourcetree.

Я сподіваюся, що це допоможе тому, хто використовує Visual Studio & Sourcetree .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.