Kaip pašalinti „Git“ filialą tiek vietiniu, tiek nuotoliniu būdu?

Noriu ištrinti filialą tiek vietiniu, tiek nuotolinio projekto „ GitHub“ kištuku.

Nepavyko ištrinti ištrintos šakos

 $ 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. 

Ką turėčiau daryti kitaip, kad sėkmingai pašalintumėte remotes/origin/bugfix tiek vietiniu remotes/origin/bugfix tiek „GitHub“?

14380
05 янв. Matthew Rankin užfiksavo sausio 05 d 2010-01-05 04:12 '10, 4:12, 2010-01-05 04:12
@ 40 atsakymų
  • 1
  • 2

Santrauka

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

Atkreipkite dėmesį, kad dažniausiai ištrintas pavadinimas yra origin .

Ištrinti vietinį skyrių

Jei norite ištrinti vietinį skyrių, naudokite vieną iš šių veiksmų:

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

Pastaba Parametras „ -d yra „ --delete slapyvardis, kuris pašalina filialą tik tuo atveju, jei jis jau yra visiškai sujungtas su pagrindiniu filialu. Taip pat galite naudoti -d , kuris yra - --delete --force , kuris pašalina filialą „nepriklausomai nuo jos bendros būsenos“. [Šaltinis: man git-branch ]

Ištrinti ištrintus siūlus [Atnaujinta 2017 m. Rugsėjo 8 d.]

Nuo „ Git v1.7.0“ galite ištrinti ištrintą filialą naudodami

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

kas būtų lengviau prisiminti nei

 $ git push <remote_name> :<branch_name> 

kuri buvo pridėta „ Git v1.5.0 “, kad pašalintumėte ištrintą atšaką ar žymę “.

Pradedant nuo „ Git v2.8.0“, taip pat galite naudoti „ git push su „ -d kaip „ --delete “ slapyvardį.

Taigi įdiegta „Git“ versija nustatys, ar reikia naudoti paprastesnę ar sudėtingesnę sintaksę.

Ištrinti ištrintą filialą [Originalus atsakymas, pateiktas 2010 m. Sausio 5 d.]

Nuo Scott Chacon“ „ Pro Git“ 3 skyriaus:

Ištrinti pašalintus filialus

Tarkime, kad jūs pateko į nuotolinį filialą - pasakyti, kad jūs ir jūsų bendradarbiai baigėsi funkcija ir sujungėte jį su pagrindiniu nuotolinio filialo (arba bet kurio kito filialo, kuriame yra stabilus kodo eilutė). Nuotolinį filialą galite ištrinti naudodami gana git push [remotename] :[branch] sintaksę git push [remotename] :[branch] . Jei norite pašalinti serverio pataisą iš serverio, atlikite šiuos veiksmus:

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

Bumas Jūsų serveryje nėra daugiau filialų. Galbūt norėsite peržiūrėti šį puslapį, nes jums reikia šios komandos ir greičiausiai pamiršsite sintaksę. Norėdami įsiminti šią komandą, git push [remotename] [localbranch]:[remotebranch] sintaksė yra git push [remotename] [localbranch]:[remotebranch] kurią mes šiek tiek peržiūrėjome anksčiau. Jei esate [localbranch] dalis, tuomet iš esmės pasakykite: „Nieko [remotebranch] mano pusėje ir padarykite jį [remotebranch] “.

git push origin :bugfix ir ji dirbo gerai. Scott Chacon buvo teisus - noriu klausytis šio puslapio (arba, tiesą sakant, šuns ausis, atsakydamas į Stack Overflow).

Tada jūs turite tai padaryti kitose mašinose.

 git fetch --all --prune 

propaguoti pokyčius.

17997 m
05 янв. Atsakymą pateikė Matthew Rankin 05 Jan 2010-01-05 04:13 '10, 4:13, 2010-01-05 04:13

Matthew atsakymas puikiai tinka ištrintiems filialams ištrinti, ir aš taip pat esu dėkingas už paaiškinimą, bet dėl ​​paprasto skirtumo tarp dviejų komandų:

Jei norite pašalinti vietinį skyrių Iš jūsų įrenginio:

git branch -d {the_local_branch} (naudokite -D vietoj to, kad priverstinai pašalintumėte filialą, nepatikrinus susijungusios valstybės)

border=0

Nuotolinio filialo serverio pašalinimas iš serverio:

git push origin --delete {the_remote_branch}

Nuoroda: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote

2944
12 июня '12 в 17:51 2012-06-12 17:51 atsakymą pateikė Ericas Brotto , birželio 12 d. 12 val. 17:51 2012-06-12 17:51

Trumpi atsakymai

Jei norite išsamesnių paaiškinimų apie šias komandas, žr. Tolesnius atsakymus kitame skyriuje.

Nuotolinio filialo trynimas:

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

Vietinio nuotolinio stebėjimo filialo trynimas:

1697
30 мая '14 в 21:32 2014-05-30 21:32 atsakymą pateikė vartotojo456814 gegužės 30 d. 14:32 2014-05-30 21:32

Filialo pašalinimo žingsniai:

ištrinti nuotolinį filialą:

 git push origin --delete <your_branch> 

Jei norite ištrinti vietinį skyrių, turite tris parinktis :

 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 

Paaiškinkite: gerai, tiesiog paaiškinkite, kas čia vyksta!

Tiesiog atlikite „ git push origin --delete kad ištrintumėte tik ištrintą filialą , pabaigoje pridėkite šakos pavadinimą, ir jis bus ištrintas ir išsiųstas į nuotolinį filialą ...

Be to, git branch -D , kuris paprasčiausiai ištrina tik vietinį filialą! ...

-D reiškia --delete --force kuris ištrina filialą, net jei jis nėra sujungtas (priverstinis ištrynimas), bet jūs taip pat galite naudoti -D o tai reiškia - --delete kuri - --delete klaidą, atitinkančią filialo susijungimo būseną ...

Taip pat sukursiu žemiau esantį vaizdą, kad būtų rodomi veiksmai:

2019

Taip pat galite ištrinti ištrintą atšaką.

 git push --delete origin serverfix 

Kuris daro tą patį kaip ir

 git push origin :serverfix 

bet tai gali būti lengviau prisiminti.

719
28 окт. atsakymas duotas pagetribe Spalio 28 d. 2011-10-28 01:22 '11 at 1:22 2011-10-28 01:22

Jei norite ištrinti filialą, pirmiausia išeikite į kitą filialą, o ne šaką, kurią norite ištrinti.

 git checkout other_than_branch_to_be_deleted 

Vietos filialo trynimas:

 git branch -D branch_to_be_deleted 

Nuotolinio filialo trynimas:

 git push origin --delete branch_to_be_deleted 
350
07 окт. atsakymą pateikė Praveen Hiremath 07 spalis 2014-10-07 16:52 '14 at 16:52 2014-10-07 16:52

Patarimas: naikindami filialus

 git push origin :<branchname> # deletes remote branch 

Ištrinamos tik nuorodos. Nors filialas iš tikrųjų yra ištrintas, jūsų komandos narių saugyklose vis dar yra nuorodų. Tai reiškia, kad kitiems komandos nariams nuotoliniai filialai vis dar matomi, kai jie daro git branch -a .

Norėdami išspręsti šią problemą, jūsų komandos nariai gali ištrinti ištrintus filialus naudodami

 git remote prune <repository> 

Paprastai tai yra git remote prune origin .

338
07 нояб. atsakymas pateikiamas pfrenssen 07.11 . 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 окт. atsakymas Felipe spalio 24 d. 2013-10-24 20:36 '13, 08:36 pm 2013-10-24 20:36

Tai paprasta: tiesiog paleiskite šią komandą:

Jei norite pašalinti „Git“ filialą vietiniu ir nuotoliniu būdu, pirmiausia pašalinkite vietinį filialą naudodami komandą:

 git branch -d example 

(čia example yra filialo pavadinimas)

Ir po to ištrinkite ištrintą filialą naudodami komandą:

 git push origin :example 
215
15 февр. atsakė Syeful Islam vasario 15 d 2015-02-15 18:20 '15 at 18:20 2015-02-15 18:20

Kitas metodas:

 git push --prune origin 

DĖMESIO: Tai pašalins visus nuotolinius filialus, kurie nėra lokaliai. Arba išsamesnė,

 git push --mirror 

kad nuotolinė saugykla atrodytų kaip vietinė saugyklos kopija (vietinės antraštės, nuotolinio valdymo pultai ir žymės atsispindi nuotolinio valdymo pultelyje).

181
18 нояб. Imanuelcostigan atsakymas lapkričio 18 d. 2012-11-18 09:11 '12, 9:11 2012-11-18 09:11

Bash“ nustatymuose naudoju šiuos veiksmus:

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

Tada galite skambinti:

 git-shoot branchname 
152
03 апр. Atsakymas pateikiamas crizCraig 03 Bal. 2013-04-03 01:11 '13 ne 1:11 2013-04-03 01:11

Nuo 2013 m. Sausio mėn. „Filialų“ puslapyje „GitHub“ įtraukė mygtuką „ Ištrinti šaką “ šalia kiekvieno filialo.

Atitinkamas tinklaraščio įrašas: filialų kūrimas ir ištrynimas

120
29 апр. atsakymą pateikė Nacho Coloma balandžio 29 d 2013-04-29 13:39 '13, 13:39, 2013-04-29 13:39

Jei norite atlikti abi šias operacijas su viena komanda, galite ~/.gitconfig jį pridėdami savo ~/.gitconfig žemiau:

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

Taip pat galite pridėti šią informaciją į savo bendrąją konfigūraciją iš komandų eilutės naudodami

112
15 янв. Ryan Kohn atsakymas, pateiktas sausio 15 d 2013-01-15 22:05 '13, 10:05 pm 2013-01-15 22:05

Jei norite ištrinti filialą vietoje ir nuotoliniu būdu

  • Įsigykite filialo - git checkout master

  • Ištrinkite nuotolinį filialą - git push origin --delete <branch-name>

  • Ištrinkite vietinį filialą - git branch --delete <branch-name>

106
04 янв. atsakymas pateikiamas mfathy00 04 sausis 2016-01-04 00:08 '16 at 0:08 2016-01-04 00:08

Ištrinti vietoje:

Jei norite ištrinti vietinį skyrių, galite naudoti:

 git branch -d <branch_name> 

Jei norite, kad filialas būtų ištrintas, naudokite -D vietoj -D .

 git branch -D <branch_name> 

Ištrinti nuotoliniu būdu:

Yra dvi parinktys:

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

Siūlyčiau naudoti antrąjį metodą, nes jis yra intuityvesnis.

103
23 мая '15 в 11:56 2015-05-23 11:56 atsakymą pateikė Rahul Gupta gegužės 23 d., 15 val. 11:56 2015-05-23 11:56

Taip pat galite tai padaryti naudodami git remote prune origin

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

Jis pašalina ir pašalina nuotolinio sekimo šakas iš git branch -r sąrašo.

97
12 марта '13 в 17:57 2013-03-12 17:57 atsakymas pateikiamas nickleefly kovo 12 d. 13 val. 17:57 2013-03-12 17:57

Be kitų atsakymų, dažnai naudoju įrankį git_remote_branch . Tai yra neprivalomas diegimas, tačiau jis suteikia jums patogų būdą bendrauti su nuotoliniais filialais. Tokiu atveju ištrinkite:

 grb delete branch 

Manau, kad taip pat dažnai naudojasi publish ir track komandomis.

95
24 марта '12 в 5:21 2012-03-24 05:21 atsakymas pateikiamas u2622 kovo 24 d., 12:21, 2012-03-24 05:21

Filialų trynimas

Tarkime, kad mūsų darbas filialo „kontaktinė forma“ yra baigtas, ir mes jau jį integravome į „šeimininką“. Kadangi to nebereikia, galime jį ištrinti (vietoje):

 $ git branch -d contact-form 

Ir ištrinti nuotolinį filialą:

 git push origin --delete contact-form 
86
30 окт. atsakymas pateikiamas Ulysses Alves 30 okt. 2015-10-30 15:39 '15 15:39 2015-10-30 15:39

Viena linijinė komanda pašalina tiek vietinius, tiek nuotolinius:

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

arba pridėkite slapyvardį žemiau ~ / .gitconfig; naudojimas: git kill branch-name

 [alias] kill = "!f(){ git branch -D \"$1\"; git push origin --delete \"$1\"; };f" 
85
17 нояб. Atsakymą pateikė Vinnie James Nov. 2016-11-17 04:03 '16, 4:03, 2016-11-17 04:03

Ištrinkite nuotolinį filialą

git push origin :<branchname>

Ištrinti vietinį skyrių

git branch -D <branchname>

Ištrinti vietinius pereinamuosius veiksmus:

  • patikrinkite kitą filialą
  • ištrinti vietinį skyrių
82
31 дек. Atsakymas duotas jayxhj gruodžio 31 d. 2015-12-31 12:22 '16 at 12:22 2015-12-31 12:22

Tiesiog pasakykite:

 git branch -d <branch-name> git push origin :<branch-name> 
80
23 апр. atsakymas, kurį pateikė piyushmandovra , balandžio 23 d 2015-04-23 21:06 '15 - 21:06 2015-04-23 21:06

Dabar galite tai padaryti naudodami „ GitHub Desktop“ programą .

Paleidus programą

  • Spustelėkite projektą, kuriame yra filialas
  • Eikite į filialą, kurį norite ištrinti. 2019
22 окт. Atsakymą pateikė Eric spalio 22 d. 2015-10-22 10:38 '15, 10:38, 2015-10-22 10:38

Jei norite ištrinti vietoje - (normalus),

 git branch -d my_branch 

Jei jūsų filialas atkūrimo / susijungimo procese vyksta ir kad jis nebuvo atliktas teisingai, gausite klaidos pranešimą „ Rebase/Merge in progress , todėl šiuo atveju negalėsite ištrinti savo filialo.

Taigi, arba jūsų poreikis leisti perpildyti / sujungti, kitaip galite priversti juos pašalinti

 git branch -d my_branch 

Jei norite ištrinti „Remote“:

 git push --delete origin my_branch 

gali naudoti tą patį

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

Grafinis pateikimas

2019

 git push origin --delete <branch Name> 

lengviau prisiminti nei

 git push origin :branchName 
68
02 мая '15 в 13:59 2015-05-02 13:59 atsakymas duotas Smilai 02 gegužės 15 d. 13:59 2015-05-02 13:59

Tai neveiks, jei turite tokį pat pavadinimą kaip ir nuotolinio valdymo skyrius:

 $ 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' 

Tokiu atveju reikia nurodyti, kad norite ištrinti filialą, o ne žymę:

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

Panašiai, jei norite pašalinti žymą, o ne filialą, turite naudoti:

 git push origin :refs/tags/branch-or-tag-name 
60
29 июля '14 в 12:02 2014-07-29 12:02 atsakymas pateikiamas Amiramix liepos 29 d., 14 val. 12:02 2014-07-29 12:02

Buvau nuliūdęs žvelgdamas į šį atsakymą, todėl panašiai vertinu atsakymą, kurį anksčiau paskelbė „crizCraig“.

Prie mano bazinio profilio pridedama ši informacija:

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

Tada kiekvieną kartą, kai tai darau su filialu (pvz., Susijungus į master ), savo terminale paleidžiu:

 gitdelete my-branch-name 

... kuris tada pašalina my-branch-nameorigin vietos.

48
10 февр. Atsakymas pateikiamas arthurakay 10 vasario mėn. 2016-02-10 22:47 '16 at 22:47 pm 2016-02-10 22:47

Daugelis kitų atsakymų sukels klaidų / įspėjimų. Šis metodas yra santykinis su „ git branch -D branch_to_delete nors vis tiek gali prireikti „ git branch -D branch_to_delete jei jis nėra visiškai sujungtas, pvz., „ some_other_branch .

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

Jei ištrynėte ištrintą filialą, ištrinti nereikia. Jis buvo naudojamas tik norint gauti pažangiausias nuotolinio valdymo pultas, esančias jūsų saugomoje saugykloje. Pastebėjau, kad „ git fetch “ pridės konsolių, o ne jas pašalins. Štai pavyzdys, kai git remote prune origin tikrai daro kažką:

Naudotojas A atlieka pirmiau aprašytus veiksmus. B vartotojas atliks šias komandas, kad pamatytų naujausius nuotolinius filialus.

 git fetch git remote prune origin git branch -r 
47
27 нояб. Atsakymą pateikė „ Brandon Cook“ lapkričio 27 d. 2013-11-27 06:04 '13, 06:04 2013-11-27 06:04

Prieš atlikdami

 git branch --delete <branch> 

įsitikinkite, kad pirmiausia nustatote, ką EXACT yra nuotolinio filialo pavadinimas, vykdydami:

 git ls-remote 

Tai parodys, ką įvesti tiksliai <branch> vertei. ( branch atveju jautrus!)

44
21 мая '16 в 0:42 2016-05-21 00:42 „ Joey“ atsakymas gegužės 21 d., 16 d. 0:42 2016-05-21 00:42
 git push origin :bugfix # Deletes remote branch git branch -d bugfix # Must delete local branch manually 

Jei esate tikri, kad norite jį pašalinti, paleiskite

 git branch -D bugfix 

Dabar vyksta tolimų nuotolinių filialų išvalymas.

 git remote prune origin 
43
21 апр. atsakymas pateikiamas Vivek 21 d. 2016-04-21 19:49 '16 at 19:49 PM 2016-04-21 19:49

Mashup visus kitus atsakymus. Reikalingas Ruby 1.9.3+ , patikrintas tik OS X.

Pavadinkite šį failą git-remove , padarykite jį vykdytinu ir įdėkite į savo kelią. Tada naudokite, pavyzdžiui, git remove temp .

41
20 нояб. atsakymas duotas Dan Rosenstark 20 nov. 2013-11-20 00:02 '13 0:02 2013-11-20 00:02
  • 1
  • 2

Kiti klausimai apie tags arba užduoti klausimą