Miten voin poistaa Git-haaran paikallisesti ja etänä?

Haluan poistaa haaran sekä paikallisesti että etänä.

Epäonnistuneet yritykset poistaa etähaara

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

Mitä minun pitäisi tehdä toisin, jotta poistaminen onnistuisi. remotes/origin/bugfix-haara sekä paikallisesti että etänä?

Ratkaisu

Tiivistelmä

$ git push -d  
$ git branch -d 

Huomaa, että useimmissa tapauksissa etänimi on origin.

Delete Local Branch

Voit poistaa paikallisen haaran jollakin seuraavista tavoista:

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

Huomaa: Vaihtoehto -d on alias vaihtoehdolle --delete, joka poistaa haaran vain, jos se on jo täysin sulautettu edeltävään haaraansa. Voit myös käyttää vaihtoehtoa -D, joka on alias vaihtoehdolle --delete --force, joka poistaa haaran "riippumatta sen sulautuneesta tilasta." [Lähde: man git-branch].

Delete Remote Branch [Päivitetty 8-Sep-2017]

Git v1.7.0-versiosta lähtien voit poistaa etähaaran käyttämällä komentoa

$ git push  --delete 

joka saattaa olla helpompi muistaa kuin

$ git push  :

joka lisättiin Git v1.5.0 "etähaaran tai tunnisteen poistamiseen."

[Git v2.8.0][git-2.8.0] -versiosta alkaen voit myös käyttää --delete:n aliasina --git push:ia -d-optiolla.

Asennettu Git-versio määrää siis sen, tarvitseeko käyttää helpompaa vai vaikeampaa syntaksia.

Delete Remote Branch [Alkuperäinen vastaus 5.1.2010]

Scott Chaconin teoksen Pro Git luvusta 3:

Etähaarojen poistaminen

Oletetaan, että olet valmis etähaaran kanssa - vaikkapa sinä ja yhteistyökumppanisi olette saaneet valmiiksi ominaisuuden ja yhdistäneet sen etähaarasi päähaaraan (tai mihin tahansa haaraan, jossa vakaa koodilinja on). Voit poistaa etähaaran käyttämällä melko kömpelöä syntaksia git push [remotename] :[branch]. Jos haluat poistaa server-fix-haarasi palvelimelta, suoritat seuraavan komennon:

$ git push origin :serverfix Osoitteeseen git@github.com:schacon/simplegit.git

  • [deleted] serverfix

Boom. Ei enää haaroja palvelimellasi. Saatat haluta koirankorvalla tätä sivua, koska tarvitset tuota komentoa, ja unohdat todennäköisesti syntaksin. Voit muistaa tämän komennon muistamalla git push [remotename] [localbranch]:[remotebranch] -syntaksin, jota käsittelimme hieman aiemmin. Jos jätät pois [localbranch]-osuuden, sanot periaatteessa: "Ota mitään minun puoleltani ja tee siitä [remotebranch]".

Annoin git push origin: bugfix ja se toimi hienosti. Scott Chacon oli oikeassa - haluan koirankorvata tuon sivun (tai käytännössä koirankorvata vastaamalla tähän Stack Overflow'ssa).

[git-2.8.0]: https://github.com/git/git/blob/master/Documentation/RelNotes/2.8.0.txt

Sitten sinun pitäisi suorittaa tämä muilla koneilla

# Fetch changes from all remotes and locally delete 
# remote deleted branches/tags etc
# --prune will do the job :-;
git fetch --all --prune

jotta muutokset leviävät.

Kommentit (24)

Voit myös poistaa etähaaran seuraavalla tavalla

git push --delete origin serverfix

Joka tekee saman kuin

git push origin :serverfix

mutta se on ehkä helpompi muistaa.

Kommentit (2)

Muiden vastausten lisäksi käytän usein git_remote_branch-työkalua. Se'on ylimääräinen asennus, mutta sillä saa kätevän tavan toimia etähaarojen kanssa. Tässä tapauksessa poistamiseen:

grb delete branch

Huomaan, että käytän myös publish- ja track-komentoja melko usein

Kommentit (0)