2012-06-01 8 views
6

In Git, a volte lavoro su filiali di lunga durata. Mi piace rebase sul master di volta in volta per semplificare la fusione quando sono pronto.Posso distruggere e ricreare un ramo remoto Git in un comando?

Dopo la ridefinizione, non riesco a spingere un ramo precedentemente premuto su un remoto, perché la cronologia del mio ramo non concorda più con la cronologia del telecomando di quel ramo. Quindi devo prima eliminarlo.

Questo è il mio flusso di lavoro corrente:

git checkout my_branch 
git rebase master 
git push origin :my_branch # Delete remote version of the branch 
git push origin my_branch # Push up my new version of history on this branch 

C'è un unico comando atomica che potrebbe sostituire gli ultimi due comandi?

+0

Non sapevo che non si potesse spingere un ramo ribaltabile. Qualcuno sa perché ?! Rebase sembra essere un'operazione abbastanza comune, perché non dovrebbe "funzionare"? – Shahbaz

+2

Citando http://help.github.com/rebase _ "È considerato una cattiva pratica rebase dei commit che hai già spinto a un repository remoto, altrimenti potresti invocare l'ira degli dei git ... sei stato avvisato . "_ – Stefan

+0

@Stefan, oh, va bene, buon vecchio git-merge è per me allora. – Shahbaz

risposta

10

Se è possibile riscrivere il ramo remoto, è possibile utilizzare git push --force my_remote my_branch.

+2

Questo risolverà la domanda come richiesto, ma Stefan è sulla strada giusta. In genere il rebasing che hai già inviato a un telecomando non è una buona pratica. – Emily

+0

Beh, se sei l'unico a lavorare su quel ramo probabilmente va bene. – Stefan

+0

@Stefan: questo è esattamente il mio caso; è il mio ramo esclusivo Non lo farei diversamente –

Problemi correlati