Haluan poistaa haaran sekä paikallisesti että etänä.
$ 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ä?
$ git push -d <remote_name> <branch_name>
$ git branch -d <branch_name>
Huomaa, että useimmissa tapauksissa etänimi on origin
.
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
].
Git v1.7.0-versiosta lähtien voit poistaa etähaaran käyttämällä komentoa
$ git push <remote_name> --delete <branch_name>
joka saattaa olla helpompi muistaa kuin
$ git push <remote_name> :<branch_name>
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.
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 [email protected]: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.
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.
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