Ho appena rinominato il mio ramo locale usando
git branch -m oldname newname
ma questo rinomina solo la versione locale del ramo. Come posso rinominare quello su GitHub?
Ho appena rinominato il mio ramo locale usando
git branch -m oldname newname
ma questo rinomina solo la versione locale del ramo. Come posso rinominare quello su GitHub?
Risposte:
Come accennato, elimina quello vecchio su Github e premi nuovamente, anche se i comandi utilizzati sono un po 'più dettagliati del necessario:
git push origin :name_of_the_old_branch_on_github
git push origin new_name_of_the_branch_that_is_local
Semplice. Sezionando un po 'i comandi, il comando git push è essenzialmente:
git push <remote> <local_branch>:<remote_branch>
Quindi fare un push senza local_branch specificato significa essenzialmente "non prendere nulla dal mio repository locale e renderlo il ramo remoto". Ho sempre pensato che fosse completamente divertente, ma è così.
Modifica: A partire da Git 1.7 esiste una sintassi alternativa per eliminare un ramo remoto:
git push origin --delete name_of_the_remote_branch
Modifica: come menzionato da @ void.pointer nei commenti
Si noti che è possibile combinare le 2 operazioni push:
git push origin :old_branch new_branch
Ciò eliminerà entrambi il vecchio ramo e spingerà quello nuovo.
Questo può essere trasformato in un semplice alias che prende il ramo remoto originale e il nuovo nome di ramo come argomenti, in ~/.gitconfig
:
[alias]
branchm = "!git branch -m $2 $3 && git push $1 :$2 $3 -u #"
Uso:
git branchm origin old_branch new_branch
Si noti che gli argomenti posizionali nei comandi di shell erano problematici nelle versioni precedenti (pre 2.8?) Di git, quindi l'alias potrebbe variare in base alla versione di git. Vedi questa discussione per i dettagli.
git push origin :old_branch new_branch
. Ciò eliminerà sia il vecchio ramo che spingerà quello nuovo.
git branch -m new_branch
(rinomina old_branch in new_branch) 2. git commit -m 'msg'
, 3. git push
4. Mhmm, old_branch si presenta in Github, domanda di Google e sono guidato alla tua risposta 5. git push origin :old_branch
(dice che è stato cancellato) 6. git push origin new_branch
... completa quindi dice * [new branch] new_branch -> old_branch
. Torna a Github e si old_branch
presenta di nuovo. Se elimino nell'interfaccia utente Web di Github, ho l'opzione "Ripristina", quindi sembra che il push del new_branch stia solo ripristinando.
I seguenti comandi hanno funzionato per me:
git push origin :old-name-of-branch-on-github
git branch -m old-name-of-branch-on-github new-name-for-branch-you-want
git push origin new-name-for-branch-you-want
Ho trovato 3 comandi su come modificare il nome del tuo ramo git e questi comandi sono il modo più veloce per farlo
git branch -m old_branch new_branch # Rename branch locally
git push origin :old_branch # Delete the old branch
git push --set-upstream origin new_branch # Push the new branch, set local branch to track the new remote
Se hai bisogno di istruzioni dettagliate, puoi leggere questo fantastico articolo
git push --set-upstream
è la parte più importante se ti capita di cambiare il nome della filiale localmente usando l'app github prima di cancellare la filiale remota.
Basta rimuovere il vecchio ramo e crearne uno nuovo.
Esempio (rinominare esclusivamente il ramo remoto):
git push origin :refs/heads/oldname
git push origin newname:refs/heads/newname
Probabilmente dovresti anche rinominare la filiale locale e modificare le impostazioni per dove premere / estrarre.
git push origin newname:refs/heads/newname
? master e newname non possono puntare allo stesso commit.
1. Rinomina la tua filiale locale.
Se sei nel ramo che vuoi rinominare:
git branch -m new-name
Se ti trovi in un ramo diverso:
git branch -m old-name new-name
2. Eliminare il ramo remoto di vecchio nome e premere il ramo locale di nuovo nome.
git push origin :old-name new-name
3. Reimpostare il ramo upstream per il ramo locale di nuovo nome.
Passa al ramo e quindi:
git push origin -u new-name
Quindi la conclusione è
git branch -m new-name
git push origin :old-name new-name
git push origin -u new-name
git branch -m new-name && git push origin :master new-name
. Fallirà. Se questa risposta riguarda solo git e non github, questa domanda è un duplicato di molte altre domande e dovrebbe essere chiusa. Se si tratta davvero di github, la risposta deve riguardare github. Questa risposta no.
Puoi farlo senza terminale, devi solo creare un ramo con il nuovo nome e rimuovere il vecchio dopo. Puoi usare questo post per farlo.
Questo articolo mostra come farlo davvero facile.
1. Per rinominare un ramo Git locale, possiamo usare il comando Git branch -m per modificare il nome:
git branch -m feature1 feature2
2. Se stai solo cercando il comando per rinominare un ramo Git remoto, questo è "
git push -u origin feature2:feature3
Verifica di non avere tag sul ramo prima di farlo. Puoi farlo con git tag
.
Un altro modo è quello di rinominare i seguenti file :
.git/refs/head/[branch-name]
in.git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/[branch-name]
in.git/refs/remotes/[all-remote-names]/new-branch-name
Rinomina testa e telecomandi sia sul tuo PC locale che su origini / server remoti
Se il tuo nome di ramo corrente contiene barre ( /
) git creerà le directory in questo modo:
nome della filiale attuale: "awe/some/branch"
.git/refs/head/awe/some/branch
.git/refs/remotes/[all-remote-names]/awe/some/branch
desidera il nome della filiale: "new-branch-name"
branch
file da.git/refs/*/awe/some/
.git/refs/head/
.branch
file da tutti.git/refs/remotes/*/awe/some/
.git/refs/remotes/*/
.branch
file impostati in new-branch-name
..git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/new-branch-name
awe/some/branch
in new-branch-name
(locale e remoto!)Informazioni: in questo modo potrebbe non essere il migliore, ma funziona comunque per le persone che potrebbero avere problemi con gli altri modi
Nel mio caso, avevo bisogno di un comando aggiuntivo
per ottenere il mio ramo rinominato su cui eseguire il push .
git branch --unset-upstream
origin newname
(Per facilità di digitazione), per prima cosa git checkout oldname
.
Quindi eseguire quanto segue:
git branch -m newname
git push origin :oldname
oppure oppuregit push origin --delete oldname
git branch --unset-upstream
git push -u origin newname
git push origin newname
Questo passaggio aggiuntivo può essere necessario solo perché (tendo a) configurare il monitoraggio remoto sui miei rami tramite . In questo modo, quando ho effettuato il check-out, successivamente ho solo bisogno di digitare anzichégit push
-u
origin oldname
oldname
git push
git push origin oldname
Se non uso git branch --unset-upstream
prima il comando git push origin newbranch
, git ricrea oldbranch
e spinge newbranch
a origin oldbranch
- sconfiggendo il mio intento.
I seguenti comandi rinominano il ramo localmente, eliminano il vecchio ramo nella posizione remota e spingono il nuovo ramo, impostando il ramo locale per tenere traccia del nuovo telecomando:
git branch -m old_branch new_branch
git push origin :old_branch
git push --set-upstream origin new_branch
Semplice . Per rinominare git branch localmente e in remoto usa questo snippet (testato e funziona come un incantesimo):
git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>
Spiegazione:
Rinomina passaggio:
Riferimento Git: con un'opzione -m o -M , verrà rinominato in. Se aveva un reflog corrispondente, viene rinominato in modo da corrispondere e viene creata una voce reflog per ricordare la ridenominazione del ramo. Se esiste, -M deve essere usato per forzare la ridenominazione.
Elimina passaggio:
Riferimento Git: git push origine: sperimentale Trova un riferimento che corrisponda a sperimentale nel repository di origine (ad esempio refs / heads / sperimentale) ed eliminalo.
Aggiornamento su repository remoto Step (riferimento a monte per il monitoraggio):
Riferimento Git: --set-upstream Per ogni ramo aggiornato o inviato con successo, aggiungi il riferimento upstream (tracking), usato da git-pull [1] senza argomenti e altri comandi. Per ulteriori informazioni, vedere branch..merge in git-config [1].
git push testa di origine
git branch -m vecchio-ramo-nome nuovo-ramo-nome
git push testa di origine
Sul ramo git esegui git branch -m nome_vecchio new_name Questo modificherà il nome del ramo sul repository locale git push origin: old_name new_name Questo spingerà il nome modificato in remoto ed eliminerà il vecchio ramo git push origin -u new_name Imposta il ramo locale da tracciare ramo remoto. Questo risolve il problema