Як видалити гілку Git як локально, так і віддалено?

Я хочу видалити гілку як локально, так і в моїй віддаленої проектної вилці на GitHub .

Чи не вдалося видалити віддалену гілку

 $ git branch -d remotes/origin/bugfix error: branch 'remotes/origin/bugfix' not found. $ git branch -d origin/bugfix error: branch 'origin/bugfix' not found. $ git branch -rd origin/bugfix Deleted remote branch origin/bugfix (was 2a14ef7). $ git push Everything up-to-date $ git pull From github.com:gituser/gitproject * [new branch] bugfix -> origin/bugfix Already up-to-date. 

Що мені потрібно зробити по-іншому, щоб успішно видалити remotes/origin/bugfix як локально, так і на GitHub?

14380
05 янв. заданий Matthew Rankin 05 Січня. 2010-01-05 04:12 '10 в 4:12 2010-01-05 4:12
@ 40 відповідей
  • 1
  • 2

Керуючий резюме

 $ git push --delete <remote_name> <branch_name> $ git branch -d <branch_name> 

Зверніть увагу, що в більшості випадків віддалене ім'я є origin .

Видалити локальну гілку

Щоб видалити локальну гілку, використовуйте один з наступних:

 $ git branch -d branch_name $ git branch -D branch_name 

Примітка. Параметр -d є псевдонімом для --delete , який видаляє гілка тільки в тому випадку, якщо вона вже повністю об'єднана з вищестоящої гілкою. Ви також можете використовувати -d , який є псевдонімом для --delete --force , який видаляє гілку "незалежно від її об'єднаного статусу". [Джерело: man git-branch ]

Видалити віддалену гілку [Оновлене 8 вересня 2017 року]

Починаючи з Git v1.7.0 , ви можете видалити віддалену гілку, використовуючи

 $ git push <remote_name> --delete <branch_name> 

що може бути легше запам'ятати, ніж

 $ git push <remote_name> :<branch_name> 

який був доданий в Git v1.5.0 "для видалення віддаленої гілки або тега".

Починаючи з Git v2.8.0 ви також можете використовувати git push з -d як псевдонім для --delete .

Таким чином, версія Git, яку ви встановили, буде визначати, чи потрібно вам використовувати більш простий або складний синтаксис.

Видалити віддалену гілку [Оригінальну відповідь від 5 січня 2010]

З глави 3 Pro Git Скотта Чакона:

Видалення віддалених гілок

Припустимо, що ви закінчили з віддаленої гілкою - скажімо, ви і ваші співавтори закінчили з функцією і об'єднали її з вашою головною гілкою віддалених (або будь-який інший гілкою, в якій знаходиться ваша стабільний рядок коду). Ви можете видалити віддалену гілку, використовуючи досить тупий синтаксис git push [remotename] :[branch] . Якщо ви хочете видалити гілку виправлення сервера з сервера, виконайте наступне:

 $ git push origin :serverfix To git@github.com:schacon/simplegit.git - [deleted] serverfix 

Boom. Немає більше гілки на вашому сервері. Можливо, ви захочете переглянути цю сторінку, тому що вам знадобиться ця команда, і ви, швидше за все, забудете синтаксис. Щоб запам'ятати цю команду, git push [remotename] [localbranch]:[remotebranch] синтаксис git push [remotename] [localbranch]:[remotebranch] який ми розглянули трохи раніше. Якщо ви [localbranch] частина [localbranch] , то в основному говорите: "Нічого не бери на моєму боці і зроби його [remotebranch] ".

Я випустив git push origin :bugfix і він працював прекрасно. Скотт Чакон мав рацію - я захочу вислухати цю сторінку (або, фактично, собаче вухо, відповівши на це в переповненому стека).

Потім ви повинні виконати це на інших машинах

 git fetch --all --prune 

поширювати зміни.

17997
05 янв. відповідь дан Matthew Rankin 05 Січня. 2010-01-05 04:13 '10 о 4:13 2010-01-05 4:13

Відповідь Matthew відмінно підходить для видалення віддалених гілок, і я також вдячний за пояснення, але для простого відмінності між двома командами:

Щоб видалити локальну гілка з вашого пристрою:

git branch -d {the_local_branch} (використовуйте -D замість того, щоб примусово видворити гілка без перевірки об'єднаного стану)

border=0

Щоб видалити сервер віддалену гілку з сервера:

git push origin --delete {the_remote_branch}

Посилання: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote

2944
12 июня '12 в 17:51 2012-06-12 17:51 відповідь дан Eric Brotto 12 червня '12 о 17:51 2012-06-12 17:51

короткі відповіді

Якщо ви хочете отримати більш докладні пояснення наступних команд, см. Довгі відповіді в наступному розділі.

Видалення віддаленої гілки:

 git branch --delete <branch> git branch -d <branch> # Shorter version git branch -D <branch> # Force delete un-merged branches 

Видалення локальної гілки віддаленого відстеження:

1697
30 мая '14 в 21:32 2014-05-30 21:32 відповідь дан user456814 30 травня '14 о 21:32 2014-05-30 21:32

Кроки по видаленню гілки:

для видалення віддаленої гілки:

 git push origin --delete <your_branch> 

Для видалення локальної гілки у вас є три способи:

 1: git branch -D <branch_name> 2: git branch --delete --force <branch_name> //same as -D 3: git branch --delete <branch_name> //error on unmerge 

Поясніть: добре, просто поясніть, що тут відбувається!

Просто виконайте git push origin --delete щоб видалити ТІЛЬКИ віддалену гілку, додайте ім'я гілки в кінці, і це одночасно видалить і відправить її на віддалену гілку ...

Також, git branch -D , який просто видаляє ТІЛЬКИ локальну гілку! ...

-D позначає --delete --force яка видаляє гілку, навіть якщо вона не об'єднана (примусове видалення), але ви також можете використовувати -D що позначає --delete яка --delete помилку, відповідну станом злиття гілки ...

Я також створюю зображення нижче, щоб показати кроки:

2019

Ви також можете використовувати наступне, щоб видалити віддалену гілку

 git push --delete origin serverfix 

Який робить те ж саме, що і

 git push origin :serverfix 

але це може бути легше запам'ятати.

719
28 окт. відповідь дан pagetribe 28 Жовтня. 2011-10-28 01:22 '11 в 1:22 2011-10-28 1:22

Якщо ви хочете видалити гілку, спочатку вийдіть в гілку, відмінну від гілки, яку потрібно видалити.

 git checkout other_than_branch_to_be_deleted 

Видалення локальної гілки:

 git branch -D branch_to_be_deleted 

Видалення віддаленої гілки:

 git push origin --delete branch_to_be_deleted 
350
07 окт. відповідь дан Praveen Hiremath 07 Жовтня. 2014-10-07 16:52 '14 о 16:52 2014-10-07 16:52

Порада: при видаленні гілок за допомогою

 git push origin :<branchname> # deletes remote branch 

а лише посилання. Незважаючи на те, що гілка насправді видалена, посилання на неї все ще існують в локальних репозиторіях членів вашої команди. Це означає, що для інших членів команди віддалені гілки все ще видно, коли вони роблять git branch -a .

Щоб вирішити цю проблему, члени вашої команди можуть видалити віддалені гілки за допомогою

 git remote prune <repository> 

Зазвичай це git remote prune origin .

338
07 нояб. відповідь дан pfrenssen 07 нояб. 2012-11-07 16:02 '12 о 16:02 2012-11-07 16:02
 git branch -D <name-of-branch> git branch -D -r origin/<name-of-branch> git push origin :<name-of-branch> 
250
24 окт. відповідь дан Felipe 24 Жовтня. 2013-10-24 20:36 '13 о 20:36 2013-10-24 20:36

Це просто: просто запустіть наступну команду:

Щоб видалити гілку Git як локально, так і віддалено, спочатку видаліть локальну гілку за допомогою команди:

 git branch -d example 

(тут example - ім'я гілки)

І після цього видаліть віддалену гілку за допомогою команди:

 git push origin :example 
215
15 февр. відповідь дан Syeful Islam 15 февр. 2015-02-15 18:20 '15 о 18:20 2015-02-15 18:20

Інший підхід:

 git push --prune origin 

УВАГА: Це видалить всі видалені гілки, які не існують локально. Або більш всебічно,

 git push --mirror 

ефективно зробить віддалений репозиторій схожим на локальну копію сховища (локальні заголовки, пульти і теги відображаються на віддаленому).

181
18 нояб. відповідь дан imanuelcostigan 18 нояб. 2012-11-18 09:11 '12 в 9:11 2012-11-18 9:11

Я використовую наступне в моїх настройках Bash :

 alias git-shoot="git push origin --delete" 

Тоді ви можете зателефонувати:

 git-shoot branchname 
152
03 апр. відповідь дан crizCraig 03 Квітня. 2013-04-03 01:11 '13 в 1:11 2013-04-03 1:11

З січня 2013 року GitHub включав кнопку Delete branch поруч з кожною гілкою на сторінці "Гілки".

Відповідне повідомлення в блозі: створення і видалення гілок

120
29 апр. відповідь дан Nacho Coloma 29 Квітня. 2013-04-29 13:39 '13 о 13:39 2013-04-29 13:39

Якщо ви хочете виконати обидва цих дії за допомогою однієї команди, ви можете зробити для неї псевдонім, додавши нижче до вашої ~/.gitconfig :

 [alias] rmbranch = "!f(){ git branch -d ${1}  git push origin --delete ${1}; };f" 

В якості альтернативи ви можете додати це в свою глобальну конфігурацію з командного рядка, використовуючи

112
15 янв. відповідь дан Ryan Kohn 15 Січня. 2013-01-15 22:05 '13 о 22:05 2013-01-15 22:05

Щоб видалити філія локально і віддалено

  • Оформити покупку в гілці - git checkout master

  • Видаліть віддалену гілку - git push origin --delete <branch-name>

  • Видаліть локальну гілку - git branch --delete <branch-name>

106
04 янв. відповідь дан mfathy00 04 Січня. 2016-01-04 00:08 '16 в 0:08 2016-01-04 00:08

Видалити локально:

Щоб видалити локальну гілку, ви можете використовувати:

 git branch -d <branch_name> 

Щоб примусово видворити гілку, використовуйте -D замість -D .

 git branch -D <branch_name> 

Видалити віддалено:

Є два варіанта:

 git push origin :branchname git push origin --delete branchname 

Я б запропонував вам використовувати 2-й спосіб, так як він більш інтуїтивно зрозумілий.

103
23 мая '15 в 11:56 2015-05-23 11:56 відповідь дан Rahul Gupta 23 травня '15 о 11:56 2015-05-23 11:56

Ви також можете зробити це, використовуючи git remote prune origin

 $ git remote prune origin Pruning origin URL: git@example.com/yourrepo.git * [pruned] origin/some-branchs 

Він видаляє і видаляє гілки віддаленого відстеження зі списку git branch -r .

97
12 марта '13 в 17:57 2013-03-12 17:57 відповідь дан nickleefly 12 березня '13 о 17:57 2013-03-12 17:57

На додаток до інших відповідей я часто використовую інструмент git_remote_branch . Це додаткова установка, але вона дає вам зручний спосіб взаємодії з віддаленими гілки. В цьому випадку видалити:

 grb delete branch 

Я знаходжу, що я також часто використовую команди publish і track

95
24 марта '12 в 5:21 2012-03-24 05:21 відповідь дан u2622 24 березня '12 в 5:21 2012-03-24 5:21

видалення гілок

Припустимо, що наша робота над гілкою "контакт-форма" виконана, і ми вже інтегрували її в "майстер". Оскільки нам це більше не потрібно, ми можемо видалити його (локально):

 $ git branch -d contact-form 

І для видалення віддаленої гілки:

 git push origin --delete contact-form 
86
30 окт. відповідь дан Ulysses Alves 30 Жовтня. 2015-10-30 15:39 '15 о 15:39 2015-10-30 15:39

Одна команда liner видаляє як локальні, так і віддалені:

D=branch-name; git branch -D $D; git push origin :$D

або додайте псевдонім нижче в ~ / .gitconfig; використання: git kill branch-name

 [alias] kill = "!f(){ git branch -D \"$1\"; git push origin --delete \"$1\"; };f" 
85
17 нояб. відповідь дан Vinnie James 17 нояб. 2016-11-17 04:03 '16 в 4:03 2016-11-17 4:03

Видалити віддалену гілку

git push origin :<branchname>

Видалити локальну гілка

git branch -D <branchname>

Видалити кроки локального переходу:

  • перевірка на іншу гілку
  • видалити локальну гілка
82
31 дек. відповідь дан jayxhj 31 дек. 2015-12-31 12:22 '16 о 12:22 2015-12-31 12:22

Просто скажіть:

 git branch -d <branch-name> git push origin :<branch-name> 
80
23 апр. відповідь дан piyushmandovra 23 Квітня. 2015-04-23 21:06 '15 о 21:06 2015-04-23 21:06

Тепер ви можете зробити це за допомогою додатка GitHub Desktop .

Після запуску програми

  • Натисніть проект, що містить гілку
  • Перейдіть до гілки, яку ви хочете видалити 2019
22 окт. відповідь дан Eric 22 Жовтня. 2015-10-22 10:38 '15 о 10:38 2015-10-22 10:38

Щоб видалити локально - (Звичайний),

 git branch -d my_branch 

Якщо ваша гілка в процесі відновлення / злиття і що це не було зроблено правильно, ви отримаєте повідомлення про помилку Rebase/Merge in progress , тому в цьому випадку ви не зможете видалити свою гілку.

Таким чином, або ваша необхідність вирішувати переповнення / злиття в іншому випадку ви можете примусово видворити, використовуючи

 git branch -d my_branch 

Щоб видалити в Remote:

 git push --delete origin my_branch 

може використовувати те ж саме,

 git push origin :my_branch # easy to remember both will do the same. 

графічне представлення

2019

 git push origin --delete <branch Name> 

легше запам'ятати, ніж

 git push origin :branchName 
68
02 мая '15 в 13:59 2015-05-02 13:59 відповідь дан Smila 02 травня '15 о 13:59 2015-05-02 13:59

Це не буде працювати, якщо у вас є тег з тим же ім'ям, що і гілка на пульті:

 $ git push origin :branch-or-tag-name error: dst refspec branch-or-tag-name matches more than one. error: failed to push some refs to 'git@github.com:SomeName/some-repo.git' 

В цьому випадку вам потрібно вказати, що ви хочете видалити гілку, а не тег:

 git push origin :refs/heads/branch-or-tag-name 

Точно так же, щоб видалити тег замість гілки, ви повинні використовувати:

 git push origin :refs/tags/branch-or-tag-name 
60
29 июля '14 в 12:02 2014-07-29 12:02 відповідь дан Amiramix 29 липня '14 о 12:02 2014-07-29 12:02

Мені прикро було зазирнути за цю відповідь, тому я зробив аналогічний підхід на відповідь, який раніше опублікував crizCraig

В мой профиль Bash додано наступне:

 function gitdelete(){ git push origin --delete $1 git branch -D $1 } 

Потім кожен раз, коли я роблю це з гілкою (наприклад, злиття в master ), я запускаю в моєму терміналі наступне:

 gitdelete my-branch-name 

... який потім видаляє my-branch-name з origin як локально.

48
10 февр. відповідь дан arthurakay 10 февр. 2016-02-10 22:47 '16 о 22:47 2016-02-10 22:47

Багато інших відповіді приведуть до помилок / попереджень. Цей підхід є відносно git branch -D branch_to_delete хоча вам все ще може знадобитися git branch -D branch_to_delete якщо він не повністю злитий, наприклад, в some_other_branch .

 git checkout some_other_branch git push origin :branch_to_delete git branch -d branch_to_delete 

Віддалене видалення не потрібно, якщо ви видалили віддалену гілку. Він використовувався тільки для отримання найсучасніших пультів дистанційного керування, доступних в відстежувати вами сховище. Я помітив, що git fetch додасть пульти, а не видалить їх. Ось приклад того, коли git remote prune origin дійсно щось зробить:

Користувач А виконує кроки, описані вище. Користувач B буде запускати такі команди, щоб побачити найостанніші віддалені гілки

 git fetch git remote prune origin git branch -r 
47
27 нояб. відповідь дан Brandon Cook 27 нояб. 2013-11-27 06:04 '13 в 6:04 2013-11-27 6:04

перед виконанням

 git branch --delete <branch> 

переконайтеся, що ви спочатку визначили, що таке EXACT ім'я віддаленої гілки, виконавши:

 git ls-remote 

Це скаже вам, що вводити ТОЧНО для значення <branch> . ( branch чутливий до регістру!)

44
21 мая '16 в 0:42 2016-05-21 00:42 відповідь дан joey 21 травня '16 в 0:42 2016-05-21 00:42
 git push origin :bugfix # Deletes remote branch git branch -d bugfix # Must delete local branch manually 

Якщо ви впевнені, що хочете його видалити, запустіть

 git branch -D bugfix 

Тепер очищення видалених віддалених гілок виконується

 git remote prune origin 
43
21 апр. відповідь дан Vivek 21 Квітня. 2016-04-21 19:49 '16 о 19:49 2016-04-21 19:49

Mashup всіх інших відповідей. Потрібно Ruby 1.9.3+ , протестовано тільки на OS X.

Назвіть цей файл git-remove , Ви можете це зробити виконуваним і помістіть його своїм шляхом. Потім використовуйте, наприклад, git remove temp .

41
20 нояб. відповідь дан Dan Rosenstark 20 лист. 2013-11-20 00:02 '13 в 0:02 2013-11-20 00:02
  • 1
  • 2

Інші питання по мітках або Задайте питання