2013-07-09 16 views
11

So che questo è stato trattato in precedenza, ma ho provato quanto segue e non riesco a cancellare il ramo remoto.Come eliminare un ramo remoto usando Git?

[email protected]:~/workspace/3DOD_VARIANCE$ git branch -a 
* master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 
    remotes/origin/multi_gauss_at_nodes 
    remotes/origin/old-state-with-mean-deviation-from-centre 
    remotes/origin/variance-branch 


[email protected]:~/workspace/3DOD_VARIANCE$ git branch -r -d origin/old-state-with-mean-deviation-from-centre Deleted remote branch origin/old-state-with-mean-deviation-from-centre (was 0ed90b2). 


Fetching origin 
From https://bitbucket.org/alykhantejani/3dobjectdetection 
* [new branch]  old-state-with-mean-deviation-from-centre -> origin/old-state-with-mean-deviation-from-centre 

Come si può vedere il ramo è stato recuperato di nuovo. Qualche idea su cosa sto facendo male?

Inoltre, come nota a margine, c'è un modo per me per verificare se questo ramo è già stato riunito in master prima di eliminare?

+1

possibile duplicato di [Come faccio a eliminare un Git branch sia localmente che in GitHub?] (Http://stackoverflow.com/questions/2003505/how-do-i-delete-a-git-branch-both-locally-and-in-github) – Livius

+0

@Livius Hi , sì, mi sono riferito prima a questa domanda, ma senza fortuna – Aly

+0

"No luck" non è un rapporto di errore utile. Inoltre, perché la tua domanda non afferma che hai provato la soluzione fornita lì? – Chronial

risposta

17

Il comando completo spinta è la seguente

git push <remote name> <local branch>:<remote branch> 

Basta inviare "n o ramo a tutti" al server remoto in questo modo:

git push origin :old-state-with-mean-deviation-from-centre 

Per la nota a margine: git impedisce di eliminare ramo che non è stata fusa quando si utilizza 'git branch -d' (e ti dice di usare - D se sei veramente sicuro di eliminarlo comunque).

Si noti anche l'git branch -d -r <branch name> eliminare i riferimenti nella cartella .git (e non il vero ramo situata sul server remoto), è per questo che un nuovo recupero si ri crearla

+0

Grazie, questo ha risolto il problema. Per favore, puoi sottolineare che l'origine/qualificatore non è necessario sul nome del ramo remoto poiché questo stava fallendo per me. – Aly

+1

tutto ciò che puoi fare con il comando "branch" riguarda il tuo repository locale, ad esempio la cartella .git. 'git branch -d -r origin/master' riguarda il file .git/refs/remotes/origin/master (che contiene uno sha1) verrà eliminato, ma non quello sul server (perché nessun ramo è denominato" origine/master "che rappresenta una parte del nome del ramo). se si digita 'git push: origin/old-branch' cercherà di rimuovere il ramo" origine/ramo vecchio "(prendendo origine come spazio dei nomi) che non esiste. – Asenar

18

Per eliminare una corsa filiale remota seguente:

git push origin :branch-to-delete 

Il trucco sta nel colon

+0

qualche idea su come controllare che questo ramo sia stato fuso in master prima di cancellarlo? – Aly

+0

ramo git - contiene quel ramo. Ti darà una lista di rami, che contengono quel ramo, Se il tuo ramo è nella lista, puoi cancellarlo. – grafa

+0

Provato il comando precedente e ottenere quanto segue: impossibile inviare alla destinazione non qualificata: origine/vecchio-stato-con-media-deviazione-da-centro La destinazione refspec non corrisponde a un riferimento esistente sul telecomando né inizia con ref/ – Aly

2

provare

git push origin :remote_branch_to_be_deleted