Vreau sa sterg o ramură atât la nivel local cât și la distanță.
``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
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ță?
$ git push -d <remote_name> <branch_name>
$ git branch -d <branch_name>
Rețineți că, în cele mai multe cazuri la distanță numele este de "origine".
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
]
Ca de Git v1.7.0, puteți șterge un de la distanță ramura folosind
$ git push <remote_name> --delete <branch_name>
care ar putea fi mai ușor de reținut decât
$ git push <remote_name> :<branch_name>
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ă.
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 [email protected]: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.
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
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 <branch> # Git version 1.7.0 or newer
git push origin :<branch> # Git versions older than 1.7.0
Ștergerea unei filiale locale:
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches
Ștergerea unui local de la distanță-de urmărire ramură:
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p # Shorter
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:
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
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.
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
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).
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
git push origin --delete <your_branch>
Pentru ștergerea filiala locală ai trei moduri:
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
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:
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.
Sfat: atunci Când ștergeți ramuri folosind
git branch -d <branchname> # deletes local branch
sau
git push origin :<branchname> # 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 <repository>
Acest lucru este de obicei git remote prune origine
.
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
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
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ă).
Șterge la nivel local:
Pentru a șterge o filială locală, puteți folosi:
git branch -d <branch_name>
Pentru a șterge o ramură cu forța, folosi -D "în loc de" - d
.
git branch -D <branch_name>
Ș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.
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
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).
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>
De asemenea, puteți face acest lucru folosind git remote prune origine
$ git remote prune origin
Pruning origin
URL: [email protected]/yourrepo.git
* [pruned] origin/some-branchs
Se prune uscate și șterge de la distanță de urmărire ramuri din o git branch -r
listare.
Î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
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"
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