2012-10-11 9 views
8

Ho lavorato su un ramo di argomento locale per qualche tempo, apportando solo alcune modifiche ogni ora e poi."Salire" con il master remoto quando si lavora su un ramo di argomento locale a lunga durata

Nel frattempo, il ramo master si è evoluto in modo significativo. Ho deciso di incorporare i nuovi cambiamenti nella ramo principale nella mia filiale argomento locale (che ha a malapena eventuali modifiche in relazione al master originale commetto che si diramava da):

git fetch 
git checkout my_branch 
git merge origin/master 

ma poi git mi avvisa con:

Immettere un messaggio di conferma per spiegare perché questa unione è necessaria, in particolare se si unisce un upstream aggiornato in un ramo di argomento.

Questo mi ha incuriosito. Perché l'avvertimento? Dovrei invece fare uno sconto ? o un cherry-pick? E a parte questo, come potrei usare un rebase o un cherry-pick nel mio caso?

+0

possibile duplicato del [flusso di lavoro e git rebase vs unire domande] (http://stackoverflow.com/questions/457927/git-workflow-and-rebase-vs-merge-questions) – R0MANARMY

risposta

6

C'è stata qualche discussione sulla formulazione di questo messaggio esatto con il mantenitore principale di git perché hai ragione, non è molto chiaro.

I laboratori di burattini di programmazione linee guida forniscono una grande spiegazione del motivo per cui questo non è ottimale e fornire una soluzione più preferibile:

lavoro dovrebbe essere fatto in tema rami e fusa nel usando non-ff. Il motivo è che la cronologia git diventa molto più chiara. L'argomento branca il gruppo correlato commette bene, e la fusione usando no-ff conserva quel raggruppamento nella cronologia.

Non unire il ramo upstream al ramo dell'argomento se è possibile evitarlo. Anche se questo è un modo per risolvere i conflitti tra lo sviluppo e lo sviluppo nel ramo upstream, porta a una cronologia non pulita - e soprattutto ad avere modifiche al codice nei commit di unione, che sono estremamente difficili da gestire.

Preferiremmo che rebase il ramo contro monte, in modo da non finire con quel casino, se devi adattarti ai cambiamenti esterni.

Puppet Labs

+0

Quando hanno detto: "Preferiremmo che tu ribassi il tuo ramo contro monte, in modo da non finire con quel casino, se devi adattarti ai cambiamenti esterni." Significa * ribadire a monte sul ramo argomento *? O viceversa? –

+3

fondamentalmente sta dicendo: rebase quando si spostano le modifiche da upstream a topic branch, si uniscono quando si spostano le modifiche dal ramo dell'argomento al ramo upstream. – kayaker243

+1

Il contrario. Riporto frequentemente il ramo dell'argomento a monte, poiché entrambi proseguo nel tempo e le mosse a monte proseguono nel tempo. 'git rebase -i master' mentre ho il mio branch dell'argomento verificato. –

Problemi correlati