Come posso eliminare un ramo Git sia localmente che remotamente?



14 Answers

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

Per rimuovere un ramo locale dalla tua macchina:

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

Per rimuovere un ramo remoto dal server:

git push origin --delete {the_remote_branch}

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

Question

Voglio eliminare un ramo sia localmente che sul mio fork del progetto remoto su 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 correttamente il ramo remotes/origin/bugfix sia localmente che su GitHub?




Ora puoi farlo con l'app GitHub Desktop .

Dopo aver lanciato l'app

  1. Clicca sul progetto che contiene il ramo
  2. Passare al ramo che si desidera eliminare
  3. Dal menu "Ramo", seleziona "Annulla pubblicazione ..." per fare in modo che il ramo venga eliminato dai server GitHub.
  4. Dal menu "Branch", seleziona, "Elimina" branch_name "...", per fare in modo che il ramo venga cancellato dalla tua macchina locale (ovvero la macchina su cui stai lavorando)



Puoi farlo anche usando git remote prune origin :

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

Elimina ed elimina i rami di tracciamento remoto da un git branch -r elenco.




Prima di eseguire

git branch --delete <branch>

assicurati di determinare prima quale sia il nome ESATTO del ramo remoto eseguendo:

git ls-remote

Questo ti dirà cosa inserire ESATTAMENTE per il valore <branch> . (il branch è sensibile al maiuscolo / minuscolo!)




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



git push origin --delete branchName

è più facile da ricordare che

git push origin :branchName



Eliminazione di rami

Supponiamo che il nostro lavoro sul ramo "contact-form" sia fatto e lo abbiamo già integrato in "master". Dal momento che non ne abbiamo più bisogno, possiamo eliminarlo (localmente):

$ git branch -d contact-form

E per eliminare il ramo remoto:

git push origin --delete contact-form



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



Molte altre risposte porteranno a errori / avvertimenti. Questo approccio è relativamente infallibile, sebbene tu possa ancora aver bisogno di git branch -D branch_to_delete se non è completamente integrato in some_other_branch , ad esempio.

git checkout some_other_branch
git push origin :branch_to_delete
git branch -d branch_to_delete

L'eliminazione remota non è necessaria se si elimina il ramo remoto. È usato solo per ottenere i telecomandi più aggiornati disponibili su un repo che stai monitorando. Ho osservato che git fetch aggiungerà i telecomandi, non li rimuoverà. Ecco un esempio di quando git remote prune origin effettivamente farà qualcosa:

L'utente A esegue i passaggi precedenti. L'utente B eseguirà i seguenti comandi per vedere i rami remoti più aggiornati

git fetch
git remote prune origin
git branch -r



A partire da gennaio 2013, GitHub ha incluso un pulsante Elimina ramo accanto a ciascun ramo nella pagina "Rami".

Post del blog pertinente: crea ed elimina i rami




git push origin :bugfix  # Deletes remote branch
git branch -d bugfix     # Must delete local branch manually

Se sei sicuro di volerlo cancellare, corri

git branch -D bugfix

Ora per ripulire i rami remoti eliminati corrono

git remote prune origin



Un comando di linea elimina sia locale che remoto :

D=branch-name; git branch -D $D; git push origin :$D

oppure aggiungi l'alias qui sotto al tuo ~ / .gitconfig ; utilizzo: git kill branch-name

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



Passi per l'eliminazione di un ramo:

per eliminare il ramo remoto:

git push origin --delete <your_branch> 

per l'eliminazione della filiale locale:

git branch -D <branch_name> 

Spiega: OK, spiega solo cosa sta succedendo qui!

Basta fare git push origin --delete per cancellare il tuo ramo remoto, aggiungere il nome del ramo alla fine e questo lo cancellerà e lo spingerà al remoto allo stesso tempo ...

Inoltre, git branch -D , che semplicemente elimina il ramo locale Only ! ...

-D sta per --delete --force che cancellerà il ramo anche se non è unito (force delete), ma puoi anche usare -d che sta per --delete che lancia un errore rispettivo dello stato di fusione dei branch ...

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




Un altro approccio è

git push --prune origin

ATTENZIONE: 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).




Elimina localmente:

Per eliminare un ramo locale, puoi usare:

git branch -d branch_name 

Per eliminare un ramo forzatamente, usa -D invece di -d .

git branch -D branch_name

Elimina in remoto:

Ci sono due opzioni:

git push origin :branchname  

git push origin --delete branchname 

Ti suggerirei di utilizzare il 2o modo in quanto è più intuitivo.




Related