Как да премахнете 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 янв. Матю Ранкин е на 05 януари 2010-01-05 04:12 '10 в 4:12 2010-01-05 04: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 от Скот Chacon:

Изтриване на изтритите клонове

Да предположим, че сте завършили с отдалечен клон - да речем, вие и вашите сътрудници завършихте с функция и го комбинирате с основния си клон на отдалеченото (или всеки друг клон, който съдържа вашата стабилна линия). Можете да изтриете отдалечен клон, използвайки доста тъп синтаксис на 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 и тя работи добре. Скот Чакон беше прав - искам да слушам тази страница (или, всъщност, ухото на куче, отговарящо на него в Stack Overflow).

След това трябва да го направите на други машини.

 git fetch --all --prune 

разпространяват промените.

17997
05 янв. Отговорът е даден от Матю Ранкин 05 януари 2010-01-05 04:13 '10 в 4:13 2010-01-05 04:13

Отговорът на Матю е чудесен за изтриване на изтрити клонове, а също така съм благодарен и за обяснението, но за простата разлика между двете команди:

За да премахнете локален клон От устройството ви:

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 Отговорът е даден от Ерик Брото на 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 01: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 Nov. 2012-11-07 16:02 '12 в 4:02 pm 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 окт. отговор, даден на Фелипе 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 09:11

Използвам следните настройки в bash :

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

След това можете да се обадите:

 git-shoot branchname 
152
03 апр. Отговорът е даден crizCraig 03 Apr. 2013-04-03 01:11 '13 в 1:11 2013-04-03 01:11

От януари 2013 г. GitHub е включила бутона Изтриване на клон до всеки клон на страницата "Клонове".

Подходящ блог пост: създаване и изтриване на клонове

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 янв. Отговор, даден от Райън Кон на 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 

Предлагам ви да използвате втория метод, тъй като той е по-интуитивен.

103
23 мая '15 в 11:56 2015-05-23 11:56 отговорът е даден от Рахул Гупта 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 05:21

Изтриване на клонове

Да предположим, че нашата работа по "контактната форма" е завършена и вече сме я интегрирали в "капитана". Тъй като вече не ни е нужно, можем да го изтрием (локално):

 $ git branch -d contact-form 

И да изтриете отдалечен клон:

 git push origin --delete contact-form 
86
30 окт. отговорът е даден Улис Алвес 30 октомври. 2015-10-30 15:39 '15 в 15:39 2015-10-30 15:39

Една команда за линейно премахва локално и отдалечено:

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 нояб. Отговорът е даден от Вини Джеймс 17 ноември. 2016-11-17 04:03 '16 в 4:03 ч . 2016-11-17 04: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 окт. Отговорът е даден от Ерик на 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

Бях раздразнен да погледна зад този отговор, така че направих подобен подход към отговора, който преди това беше публикувал.

Следното се добавя към профила ми в 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 Feb. 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 наистина прави нещо:

Потребител А изпълнява описаните по-горе стъпки. Потребител Б ще изпълни следните команди, за да види най-новите отдалечени клонове.

 git fetch git remote prune origin git branch -r 
47
27 нояб. Отговорът е даден от Брандън Кук на 27 ноември. 2013-11-27 06:04 '13 в 6:04 2013-11-27 06:04

Преди извършване

 git branch --delete <branch> 

уверете се, че първо определите какво е точното име на отдалечения клон, като изпълните:

 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 апр. отговорът е даден Вивек 21 апр. 2016-04-21 19:49 '16 в 7: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

Други въпроси относно тагове или Ask a Question