2011-08-16 27 views
35

Ho due rami git: master e sperimentale.Rinominare il ramo git remoto

Sperimentale è diventato buono, voglio farne il padrone. Ho pensato che avrei rinominare a mischiare le cose, ma qui è quello che ho ottenuto:

nutebook:Stuff nathan$ git remote rename master old 
error: Could not rename config section 'remote.master' to 'remote.old' 

Io uso GitHub e Git-Tower.

risposta

56

Quanto segue è una guida per rinominare il ramo principale. Funzionerà altrettanto facilmente per rinominare il tuo ramo sperimentale.

Ecco come ho effettuato la ridenominazione.

Per prima cosa, nell'albero di lavoro, rinominare il master in locale su altro.

git branch -m master old-dev 

Rinominare un ramo funziona mentre si è sul ramo, quindi non c'è alcuna necessità di cassa qualcos'altro.

Poi, localmente rinominare il ramo di manutenzione (2.63-branch) per maestro:

git branch -m 2.63-branch master 

Ora, il tempo a pasticciare con il telecomando. Nel caso in cui si rovini, è possibile che si desideri verificare se si dispone di un backup corrente . In primo luogo, eliminare il maestro del telecomando:

git push origin :master 

Ed ora, dare il telecomando vostro nuovo padrone:

git push origin master:refs/heads/master 

Aggiornamento: Quando si crea un nuovo ramo, gli arbitri/teste/prefisso è necessario su il lato remoto. Se il ramo esiste già (come sopra il master ), sul lato remoto è richiesto solo il nome del ramo.

... e il tuo ormai ribattezzato vecchio maestro:

git push origin old-dev:refs/heads/old-dev 

Infine, eliminare il vecchio nome del ramo di manutenzione per evitare la confusione :

git push origin :2.63-branch 

clienti potranno ora ottenere il ' nuovo 'ramo principale quando tirano.

vedi this sito.

+7

Per aggiungere a questo: quando volevo rinominare il mio 'master' su github, prima dovevo cambiare il ramo predefinito sotto 'settings' prima che mi permettesse di cancellarlo (ad esempio 'git push origin: master'). –

+0

Puoi semplicemente rinominare il ramo localmente e inserirlo in remoto e quindi eliminare quello vecchio? –

+1

Trovo che il flag -u da inviare sia piacevole perché imposta il rilevamento upstream del nuovo telecomando per te, ad es. 'git push -u origine master' (usando git 1.7 Non avevo bisogno del prefisso completo refs/heads) –

1

master è un ramo, non un telecomando come origin. se si desidera avere il vostro lavoro sperimentale al branch master, semplicemente si fondono in:

git checkout master 
git merge experimental 
0

cosa si è tentato di fare era rinominare un repo remoto dal "maestro" a "vecchio". Per rinominare un ramo su un altro repository, basta cancellarlo con

git push <remote> :<branch name> 

quindi inserirlo come qualcos'altro.

4

Penso che il modo più semplice sia quello di eseguire il checkout del ramo sperimentale, eliminare il ramo master remoto, quindi spingere quello sperimentale locale come nuovo master remoto.

// delete the remote master branch by pushing null 
// (the space in front of the semicolon) in this branch 
git push origin :master 
// push local experimental to remote master 
git push origin experimental:master 
1

Se sei un utente Mac, è possibile utilizzare il Mac App GitHub (https://mac.github.com/) per rinominare i rami.

Problemi correlati