Domanda Come posso eliminare un ramo Git sia localmente che remotamente?


Voglio eliminare un ramo sia localmente che sul mio fork del progetto remoto GitHub .

Tentativi non riusciti per eliminare il ramo remoto

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

Cosa devo fare in modo diverso per cancellare con successo il file remotes/origin/bugfix ramo sia localmente che su GitHub?


13808
2018-01-05 01:12


origine


risposte:


Sintesi

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

Si noti che nella maggior parte dei casi è il nome remoto origin.

Elimina il ramo locale

Per eliminare il Locale  filiale utilizzare uno dei seguenti:

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

Nota:  Il -d l'opzione è un alias per --delete, che elimina solo il ramo se è già stato completamente integrato nel relativo ramo upstream. Puoi anche usare -D, che è un alias per --delete --force, che elimina il ramo "indipendentemente dal suo stato unito". [Fonte: man git-branch]

Elimina filiale remota [Aggiornato l'8-settembre-2017]

Come di Git v1.7.0 , puoi cancellare a a distanza  ramo usando

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

che potrebbe essere più facile da ricordare di

$ git push <remote_name> :<branch_name>

che è stato aggiunto in Git v1.5.0  "per eliminare un ramo remoto o un tag".

A partire Git v2.8.0  puoi anche usare git push con il -d opzione come alias per --delete.

Pertanto, la versione di Git che hai installato determinerà se è necessario utilizzare la sintassi più facile o più difficile.

Elimina il ramo remoto [Risposta originale del 5 gennaio 2010]

Dal capitolo 3 di Pro Git  di Scott Chacon:

Eliminazione di rami remoti

Supponiamo che tu abbia finito con un ramo remoto - ad esempio, tu e i tuoi collaboratori avete finito con una funzione e l'avete fusa nel ramo principale del telecomando (o in qualsiasi ramo in cui si trova la vostra linea di demarcazione stabile). È possibile eliminare un ramo remoto usando la sintassi piuttosto ottusa git push [remotename] :[branch]. Se si desidera eliminare il ramo serverfix dal server, si esegue quanto segue:

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

Boom. Nessun altro ramo sul tuo server. Potresti voler ascoltare questa pagina, perché avrai bisogno di quel comando, e probabilmente dimenticherai la sintassi. Un modo per ricordare questo comando è richiamando il git push [remotename] [localbranch]:[remotebranch] sintassi che siamo andati un po 'prima. Se si lascia fuori il [localbranch] porzione, quindi stai fondamentalmente dicendo: "Non prendere niente dalla mia parte e farlo diventare [remotebranch]“.

Ho emesso git push origin :bugfix e ha funzionato magnificamente. Scott Chacon aveva ragione - lo vorrò orecchio di cane  quella pagina (o virtualmente l'orecchio del cane rispondendo su Overflow dello stack).

Quindi dovresti eseguirlo su altre macchine

git fetch --all --prune

per propagare le modifiche.


17181
2018-01-05 01:13



La risposta di Matthew è ottima per la rimozione a distanza  rami e apprezzo anche la spiegazione, ma per fare una semplice distinzione tra i due comandi:

Per rimuovere a filiale locale  dalla tua macchina:

git branch -d {the_local_branch} (uso -D invece di forzare l'eliminazione del ramo senza controllare lo stato unito)

Per rimuovere a filiale remota  dal server:

git push origin --delete {the_remote_branch}

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


2867
2018-06-12 14:51



Le risposte brevi

Se desideri spiegazioni più dettagliate dei seguenti comandi, consulta le risposte lunghe nella prossima sezione.

Eliminazione di un ramo remoto:

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

Eliminazione di una filiale locale:

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

Eliminazione di un ramo di localizzazione remota locale:

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

La lunga risposta: ci sono 3 diversi rami da eliminare!

Quando hai a che fare con l'eliminazione di rami sia a livello locale che remoto, tieni presente che ci sono 3 diversi rami coinvolti :

  1. La filiale locale X.
  2. Il ramo di origine remoto X.
  3. Il ramo locale di localizzazione remota origin/X che tiene traccia del ramo remoto X.

Visualization of 3 branches

Il poster originale usato

git branch -rd origin/bugfix

che ha solo cancellato il suo ramo locale di localizzazione remota   origin/bugfixe non il vero ramo remoto bugfix sopra origin.

Diagram 2

Per eliminare quel ramo remoto effettivo , hai bisogno

git push origin --delete bugfix

Diagram 3

dettagli aggiuntivi

Le seguenti sezioni descrivono ulteriori dettagli da considerare quando si eliminano i rami remoti e di localizzazione remota.

Se si preme per eliminare i rami remoti, vengono eliminati anche i rami di tracciamento remoto

Si noti che l'eliminazione del ramo remoto X dalla riga di comando usando a git push  eliminerà anche il ramo locale di localizzazione remota   origin/X, quindi non è necessario per potare il ramo di localizzazione remota obsoleto con git fetch --prune o git fetch -p, anche se non sarebbe male se lo facessi comunque.

È possibile verificare che il ramo di monitoraggio remoto origin/X è stato eliminato anche eseguendo quanto segue:

# 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

Eliminazione dell'origine del ramo di tracciamento remoto locale obsoleto / X

Se non hai eliminato il tuo ramo remoto X dalla riga di comando (come sopra), quindi il repository locale conterrà ancora un ramo di tracciamento remoto (ora obsoleto) origin/X. Questo può accadere se si elimina una diramazione remota direttamente attraverso l'interfaccia web di GitHub, ad esempio.

Un modo tipico per rimuovere questi rami obsoleti di tracciamento remoto (da Git versione 1.6.6) è quello di eseguire semplicemente git fetch con il --prune o più corto -p. Si noti che ciò rimuove tutti i rami obsoleti locali di tracciamento remoto per eventuali rami remoti che non esistono più sul telecomando :

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

Ecco la citazione pertinente dal 1.6.6 note di rilascio  (sottolineatura mia):

"git fetch" imparato   --all e --multipleopzioni, per eseguire il recupero da   molti repository e --prune opzione per rimuovere il monitoraggio remoto   rami che sono andati stantii.   Questi fanno "git update remoto" e "git   remote prune "meno necessario (non esiste un piano per rimuovere" remoto   aggiornare "né" remote prune ", comunque).

Alternativa alla potatura automatica di cui sopra per i rami obsoleti di localizzazione remota

In alternativa, invece di eliminare i rami obsoleti locali di localizzazione remota git fetch -p, puoi evitare di fare l'operazione di rete extra  semplicemente rimuovendo manualmente il ramo (i) con il --remote o -r bandiere:

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

Guarda anche


1640
2018-05-30 18:32



Passi per l'eliminazione di un ramo:

per cancellare il filiale remota:

git push origin --delete <your_branch> 

per cancellare il filiale locale , hai tre modi:

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

Spiegare:  OK, spiega solo cosa sta succedendo qui!

Semplicemente git push origin --delete a elimina SOLO il tuo ramo remoto , aggiungi il nome del ramo alla fine e questo verrà eliminato e lo sposterà al remoto contemporaneamente ...

Anche, git branch -D, che semplicemente elimina il ramo locale SOLO ! ...

-D sta per --delete --force che cancellerà il ramo anche se non è unito (forza cancella), ma puoi anche usarlo -d che sta per --delete che generano un errore rispettivo dello stato di fusione dei rami ...

Creo anche l'immagine qui sotto per mostrare i passaggi:

delete a remote and local branch in git


920
2018-06-27 13:13



È inoltre possibile utilizzare quanto segue per eliminare il ramo remoto.

git push --delete origin serverfix

Che fa la stessa cosa di

git push origin :serverfix

ma potrebbe essere più facile da ricordare.


703
2017-10-27 22:22



Se si desidera eliminare un ramo, prima effettuare il checkout al ramo diverso dal ramo da eliminare.

git checkout other_than_branch_to_be_deleted

Eliminazione della filiale locale:

git branch -D branch_to_be_deleted

Eliminazione del ramo remoto:

git push origin --delete branch_to_be_deleted

344
2017-10-07 13:52



Suggerimento: quando si eliminano i rami utilizzando

git branch -d <branchname>    # deletes local branch

o

git push origin :<branchname> # deletes remote branch

solo i riferimenti sono cancellati. Anche se il ramo viene effettivamente rimosso sul telecomando, i riferimenti ad esso sono ancora presenti nei repository locali dei membri del team. Ciò significa che per gli altri membri del team i rami eliminati sono ancora visibili quando eseguono a git branch -a.

Per risolvere questo problema, i membri del tuo team possono potare i rami cancellati con

git remote prune <repository>

Questo è in genere git remote prune origin.


329
2017-11-07 13:02



git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>

247
2017-10-24 17:36



Questo è semplice: basta eseguire il seguente comando:

Per eliminare un ramo Git sia localmente che remotamente, prima cancella il ramo locale usando il comando:

git branch -d example

(Qui example è il nome del ramo)

E dopo quello cancella il ramo remoto usando il comando:

git push origin :example

212
2018-02-15 15:20



Un altro approccio è

git push --prune origin

AVVERTIMENTO:   Questo eliminerà tutti i rami remoti che non esistono localmente.  O più esaurientemente,

git push --mirror

renderà efficacemente il repository remoto simile alla copia locale del repository (le testine locali, i telecomandi e i tag sono speculari su remoto).


178
2017-11-18 06:11