2011-09-21 6 views
6

Qualcosa che spesso mi trovo a fare è, "Rebase un ramo di funzionalità, unirlo & eliminarlo." Per farlo corro:C'è un modo più veloce per integrare un ramo di funzionalità?

git rebase master feature 
git checkout master 
git merge feature 
git branch -d feature 

Sembra abbastanza faticoso per qualcosa che immagino sia un flusso di lavoro comune. Qualcuno sa un modo più veloce?

(Ovviamente ho potuto scrivere una sceneggiatura, ma mi chiedo se c'è un approccio integrato che ho perso.)

+0

git b Ad un livello abbastanza basso, non penso che ci sia un modo per ridurre il numero di comandi diversi dallo scripting – CharlesB

+1

True. Può darsi che la risposta alla mia domanda sia "No". Sembrava valsa la pena di chiederlo, per ogni evenienza. :-) –

+0

decidi: rebase o unione, non entrambi. –

risposta

1

L'approccio generale rimane scripting o di definire gli alias, come illustrato in "Streamline your git workflow with aliases", tranne che potrebbe essere necessario un parametro come in "git alias with positional parameters":

rebmrg = "!f() { git rebase master $1; git checkout master ; git merge $1 ; git branch -d $1 }; f" 
+2

Grazie VonC, è gentile da parte tua fornire un esempio. Mi sto davvero chiedendo se c'è un modo nativo per farlo. Speravo che qualcuno dicesse qualcosa come: "C'è un flag di unione ed eliminazione che hai perso". Per quello che vale, se dovessi scrivere un alias farei 'git rebase master $ 1 && git ...' - es., Usa '&&' invece di ';' in modo che il comando si arresti se una parte fallisce. –

0

Se siete su maestro già allora sarebbe più veloce per appena fondersi in e cancellarlo (git merge feature e git branch -d feature).

Questi sono solo due comandi e si evita di ricontrollare un vecchio master semplicemente per farlo avanzare rapidamente.

Inoltre, è sufficiente eseguire una singola risoluzione anziché potenzialmente più risolti in quanto potrebbe richiedere una ridefinizione di più commit del ramo di funzione.

Inoltre, la cronologia riflette in modo migliore ciò che è stato effettivamente sviluppato sul ramo delle funzioni. rebase distrugge questa cronologia.

+0

Pensiero interessante. Personalmente ho sempre preferito rebase, presentando i miei commit al mondo/come se fossero scritti contro l'ultima versione corrente. Penso che il registro di sviluppo principale appaia più pulito in questo modo.Sono semplicemente bloccato in un modo di pensare sovversivo? –

+0

@KrisJenkins No, non lo sei. Ci sono molti di noi che lavorano come te, non solo per i gusti di tutti. –

+1

@KrisJenkins: puoi lavorare come vuoi, ma la tua domanda chiedeva un modo più veloce per integrare un ramo di funzionalità. Per quanto posso vedere, una fusione diretta è fondamentalmente più veloce e più facile di un rebase e fusione. Un rebase e unire è un processo più coinvolto per sua stessa natura. –

0

È possibile salvare un comando (dopo l'unione rebase risolverà a un fast-forward in ogni caso):

git rebase master feature 
git checkout -B master 
git branch -d feature 

Ma un uso migliore degli alias come altri hanno suggerito o non rebase affatto, semplicemente unire

0

la tua filiale fusione è esattamente lo stesso quello come rebase, quindi si può solo rinominarlo a padroneggiare (wich la bandiera -M per forzarlo come master esiste già)

git rebase master feature 
git branch -M feature master 
Problemi correlati