Cum pot șterge un Git de ramură la nivel local și de la distanță?

Vreau sa sterg o ramură atât la nivel local cât și la distanță.

Încercări eșuate de a Șterge de la Distanță de Ramură

``bash $ git branch -d telecomenzi/origine/bugfix eroare: branch 'telecomenzi/origine/bugfix' nu a fost găsit.

$ git branch -d origine/bugfix eroare: branch 'de origine/bugfix' nu a fost găsit.

$ git branch -rd origine/bugfix Șterse de la distanță ramură de origine/bugfix (a fost 2a14ef7).

$ git push Totul până-la-data de

$ git pull De la github.com:gituser/gitproject

  • [new branch] bugfix -> origine/bugfix Deja până-la-data. ``

Ce ar trebui să fac diferit de a șterge cu succes la telecomenzi/origine/bugfix ramură atât la nivel local cât și la distanță?

Comentarii la întrebare (3)
Soluția

Rezumat

$ git push -d  
$ git branch -d 

Rețineți că, în cele mai multe cazuri la distanță numele este de "origine".

Șterge Filiala Locală

Pentru a șterge locale ramura utilizați una dintre următoarele:

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

Notă: - d opțiune este un alias pentru --delete, care șterge doar sucursalei, dacă acesta a fost deja pe deplin fuzionat în amonte de ramură. Ai putea folosi, de asemenea,- D, care este un alias pentru--șterge --force, care șterge creanga "indiferent de fuzionat statut." [Sursa: om git branch]

Șterge de la Distanță de Ramură [Actualizat la 8-Sep-2017]

Ca de Git v1.7.0, puteți șterge un de la distanță ramura folosind

$ git push  --delete 

care ar putea fi mai ușor de reținut decât

$ git push  :

care a fost adăugat în Git v1.5.0 "pentru a șterge de la distanță o sucursală sau o etichetă."

Începând de la [Git v2.8.0][git-2.8.0] puteți utiliza, de asemenea, git push cu -d opțiune ca un alias pentru --delete.

Prin urmare, versiunea de Git ați instalat va dicta dacă aveți nevoie pentru a utiliza mai ușor sau mai greu de sintaxă.

A șterge de la Distanță de Ramură [Original Răspuns de la 5-Jan-2010]

De la Capitolul 3 din Pro Git de Scott Chacon:

Ștergerea de la Distanță Ramuri

să Presupunem că ai terminat cu o ramură de la distanță — și colaboratori sunt finisate cu o caracteristică și au fuzionat într-telecomanda master ramură (sau orice ramură ta stabilă cod-line este in). Puteți șterge o ramură de la distanță, folosind destul de obtuz sintaxa git push [remotename] :[creangă]. Dacă doriți să ștergeți server-fix filiala de pe server, executați următoarea:

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

  • [eliminat] serverfix

Boom-ul. Nu mai ramuri pe server. Poate doriți să dog-ear această pagină, pentru că vei avea nevoie de acea comandă, și vei uita probabil sintaxa. O modalitate de a aminti această comandă este prin reamintirea git push [remotename] [localbranch]:[remotebranch] sintaxa că am mers un pic mai devreme. Daca pleci de pe [localbranch] parte, atunci tu de fapt spui, "nu Lua nimic de partea mea și să-l fi [remotebranch]."

Am emis git push origin: bugfix și a funcționat de minune. Scott Chacon a fost corect—nu va dori să câine ureche pagina (sau aproape urechi de câine de a răspunde la acest lucru pe Stiva Overflow).

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

Apoi, ar trebui să execute acest lucru pe alte masini

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

pentru a propaga modificări.

Comentarii (24)

Matei's a răspunde este foarte bun pentru eliminarea telecomanda sucursale și am aprecia, de asemenea, o explicație, dar pentru a face o simplă distincție între cele două comenzi:

Pentru a elimina un filiala locală de masina ta:

git branch -d {the_local_branch} (use -D, în loc de a forța ștergerea ramură fără verificarea fuzionat stare)

Pentru a elimina un de la distanță ramură de pe server:

git push origin --șterge {the_remote_branch}

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

Comentarii (8)

Răspunsurile Scurte

Dacă doriți mai multe explicații detaliate din următoarele comenzi, apoi a se vedea lung răspunsuri în secțiunea următoare.

Ștergerea o ramură de la distanță:

git push origin --delete   # Git version 1.7.0 or newer
git push origin :          # Git versions older than 1.7.0

Ștergerea unei filiale locale:

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

Ștergerea unui local de la distanță-de urmărire ramură:

git branch --delete --remotes /
git branch -dr / # Shorter

git fetch  --prune # Delete multiple obsolete tracking branches
git fetch  -p      # Shorter

Răspunsul Lung: există 3 diferite ramuri pentru a șterge!

Când te're de-a face cu ștergerea ramuri atât la nivel local cât și la distanță, să păstreze în minte că există 3 diferite ramuri implicate:

  1. Filiala locală "X".
  2. Telecomanda origine filiala "X".
  3. Local la distanță de urmărire ramură origine/X, care urmărește de la distanță filiala "X".

Poster original folosit

git branch -rd origin/bugfix

care numai șters local la distanță de urmărire ramură origine/bugfix, și nu real de la distanță de ramură "bugfix" la "origine".

Pentru a șterge real de la distanță de ramură, ai nevoie de

git push origin --delete bugfix

Detalii Suplimentare

Următoarele secțiuni descriu detalii suplimentare să ia în considerare atunci când ștergerea de la distanță și de la distanță-de urmărire ramuri.

Împingând pentru a șterge de la distanță ramuri, de asemenea, șterge de la distanță de urmărire ramuri

Rețineți că ștergerea de la distanță filiala " X "din linia de comandă, folosind un git push va șterge, de asemenea, la distanță la nivel local-de urmărire ramură origine/X, astfel încât nu este necesar să prune învechite de la distanță-de urmărire ramură cu git fetch --prune" sau " git fetch-p, deși nu ar't rănit dacă ai făcut-o oricum.

Puteți verifica că la distanță de urmărire ramură origine/X a fost, de asemenea, șters de către execută următoarele:

# View just remote-tracking branches
git branch --remotes
git branch -r

# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a

Tăiere învechite local la distanță de urmărire ramură de origine/X

Dacă ai n't a șterge de la distanță de ramură " X " din linia de comandă (ca mai sus), apoi local repo va conține în continuare (un acum învechit) la distanță de urmărire ramură origine/X. Acest lucru se poate întâmpla dacă ați șters o ramură de la distanță direct prin intermediul GitHub's interfață web, de exemplu.

Un mod tipic de a elimina aceste învechite de la distanță-de urmărire ramuri (din Git versiunea 1.6.6) este de a rula pur și simplu git fetch " cu " --prune sau mai scurt -p. Rețineți că acesta elimină toate învechite local la distanță de urmărire ramuri pentru orice distanță ramuri care nu mai exista pe telecomanda:

git fetch origin --prune
git fetch origin -p # Shorter

Aici este citat relevant din 1.6.6 eliberare note (sublinierea mea):

"git fetch" a aflat --toate " și " - mai multe opțiuni pentru a rula aduce la multe depozite, și **--prune` opțiune pentru a șterge de la distanță de urmărire ramuri care au mers vechi.** Acestea fac "git de actualizare de la distanță" și "git la distanță de prune" mai puțin necesar (nu există nici un plan pentru a elimina "de la distanță actualizare" sau "de la distanță de prune", deși).

Alternative de mai sus automată de tăiere pentru învechite de la distanță-de urmărire ramuri

Alternativ, în loc de tăierea învechite local la distanță de urmărire ramuri prin git fetch-p, puteți evita de a face suplimentare de exploatare a rețelei doar prin eliminarea manual ramura(es) cu --de la distanță " sau " - r steaguri:

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

A Se Vedea, De Asemenea,

Comentarii (3)

Pașii pentru ștergerea unei sucursale:

Pentru ștergerea **ramură de la distanță:**
git push origin --delete  

Pentru ștergerea filiala locală ai trei moduri:

1: git branch -D  

2: git branch --delete --force   //same as -D

3: git branch --delete           //error on unmerge

Explicați: OK, explica-mi ce'e pe aici!

Pur și simplu nu git push origin --delete pentru a șterge de la distanță de ramură NUMAI, adăugați numele de sucursale la sfârșitul anului și acest lucru va șterge și împingeți-l la distanță în același timp...

De asemenea, git branch -D, care pur și simplu ștergeți filiala locală ****A!...

-D vine de la --delete --force, care va șterge ramura chiar l's nu a fuzionat(forța șterge), dar puteți folosi, de asemenea, - d care vine de la --delete care arunca o eroare respective de ramură fuziona stare...

Am crea, de asemenea, imaginea de mai jos pentru a arăta pașii de mai jos:

Comentarii (4)

De asemenea, puteți să utilizați următoarele opțiuni pentru a șterge de la distanță de ramură

git push --delete origin serverfix

Care face acelasi lucru ca

git push origin :serverfix

dar acesta poate fi mai ușor să vă amintiți.

Comentarii (2)

Sfat: atunci Când ștergeți ramuri folosind

git branch -d  # deletes local branch

sau

git push origin : # deletes remote branch

numai referirile sunt șterse. Chiar dacă ramura este de fapt eliminate de pe telecomanda referințele la acesta încă mai există în depozite locale de membrii echipei. Acest lucru înseamnă că, pentru ceilalți membri ai echipei șterse ramuri sunt încă vizibile atunci când se face o git branch -o.

Pentru a rezolva această membrii echipei pot prune elimină ramurile cu

git remote prune 

Acest lucru este de obicei git remote prune origine.

Comentarii (3)

Dacă doriți să ștergeți o ramură, prima verificare la filiala altele decât cele de ramură să fie șterse.

git checkout other_than_branch_to_be_deleted

Ștergerea filiala locală:

git branch -D branch_to_be_deleted

Ștergerea de la distanță ramură:

git push origin --delete branch_to_be_deleted
Comentarii (0)
git branch -D 
git branch -D -r origin/
git push origin :
Comentarii (2)

Acest lucru este simplu: trebuie Doar să rulați următoarea comandă:

Pentru a șterge un Git branch atât la nivel local cât și la distanță, ștergeți mai întâi filiala locală folosind comanda:

git branch -d example

(aici "exemplu" este ramura numele)

Și după aceea șterge de la distanță de ramură, folosind comanda:

git push origin :example
Comentarii (0)

O altă abordare este de:-

git push --prune origin

AVERTISMENT: Acest lucru va șterge toate sucursalele izolate, care nu există la nivel local. Sau mai pe larg,

git push --mirror

va face ca depozitul de la distanță arată ca copia locală a depozitului (locale capete, telecomenzi și tag-uri sunt oglindite pe telecomandă).

Comentarii (1)

Eu folosesc următoarele mea Bash setări:

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

Apoi, puteți apela:

git-shoot branchname
Comentarii (3)

Șterge la nivel local:

Pentru a șterge o filială locală, puteți folosi:

git branch -d  

Pentru a șterge o ramură cu forța, folosi -D "în loc de" - d.

git branch -D 

Șterge de la distanță:

Există două opțiuni:

git push origin :branchname  

git push origin --delete branchname 

Îți sugerez să utilizați al 2-lea mod, ca este mult mai intuitiv.

Comentarii (0)

Din ianuarie 2013, GitHub inclus o Ștergeți-sucursala butonul de lângă fiecare ramură în "Ramuri" pagina.

Relevante blog post: de a Crea și a șterge ramuri

Comentarii (2)

Dacă doriți să finalizați acești pași cu o singură comandă, puteți face un alias pentru că prin adăugarea de mai jos pentru a ta ~/.gitconfig:

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

Alternativ, puteți adăuga acest la nivel global config din linia de comandă, folosind

git config --global alias.rmbranch \
'!f(){ git branch -d ${1} && git push origin --delete ${1}; };f'

NOTĂ: Dacă utilizați -d (litere mici d), filiala va fi ștearsă numai dacă a fost fuzionat. Pentru a forța ștergerea să se întâmple, va trebui să utilizați -D (majuscule D).

Comentarii (1)

Pentru a șterge dvs. de ramură la nivel local și de la distanță

  • Checkout pentru ramura master - `git checkout master

  • Șterge de la distanță de ramură - git push origin --delete <sucursală-numele>

  • Ștergeți filiala locală - git branch-ștergeți <sucursală-numele>

Comentarii (0)

De asemenea, puteți face acest lucru folosind git remote prune origine

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

Se prune uscate și șterge de la distanță de urmărire ramuri din o git branch -r listare.

Comentarii (0)

În plus față de alte răspunsuri, de multe ori am folosi git_remote_branch instrument. L's un plus de folosit, dar devine o modalitate convenabilă de a interacționa cu sucursalele izolate. În acest caz, pentru a șterge:

grb delete branch

Mi se pare că eu, de asemenea, utiliza "publicare" și "piesa" comenzi destul de des

Comentarii (0)

O linie comanda delete atât la nivel local, și de la distanță:

D=ramură-numele; git branch -D $D; git push origin :$D

sau adăugați un alias de mai jos pentru a ta ~/.gitconfig; utilizare: git ucide ramură-numele

[alias]
    kill = "!f(){ git branch -D \"$1\";  git push origin --delete \"$1\"; };f"
Comentarii (1)

Ștergerea Ramuri

Sa's presupunem noastre de muncă pe ramură "contact-form" este de făcut și ne-am'am deja integrat în "maestru". Când ne-am don't nevoie de ea, putem șterge (la nivel local):

$ git branch -d contact-form

Și pentru ștergerea de la distanță ramură:

git push origin --delete contact-form
Comentarii (0)

Șterge de la distanță de ramură

git push origin :<branchname>

Șterge filiala locală

git branch -D <branchname>

Șterge filiala locală pași:

  1. checkout pentru o altă ramură
  2. șterge filiala locală
Comentarii (2)