Il nostro flusso di lavoro di sviluppo git è che i rami argomento vengono continuamente ridefiniti sull'ultimo master fino a quando non vengono uniti.Modifica cronologia di un ramo di argomento git che utilizza uniti per utilizzare le rebases
Tuttavia, un nuovo sviluppatore ha creato rami di argomenti in cui ha eseguito diverse fusioni di master nelle sue sezioni tematiche per mantenerle aggiornate.
A---B---C---D---E topic
/ //
F---G---H---I master
Mentre unire questo ramo di argomento al master sarebbe perfettamente corretto, risulta in una cronologia molto caotica. Voglio convertire questi rami argomento in una storia ricalcolato lineare, pulita, che può essere fusa in modo pulito in matrimoniale con un unico --no-ff
merge commettere cioè:
A'---B'---E' topic
/
F---G---H---I master
Idealmente, ci sarebbe qualche git-fu che mi permettesse di fare il rebase, assumendo i commit sul ramo dell'argomento così com'è, mentre applica automaticamente le informazioni sulla risoluzione dei conflitti di fusione già disponibili nell'argomento merge commit come C e D.
So che posso semplicemente applicare la patch di "git" diff master..topic "e poi usare rebase per lavorare all'indietro e dividere manualmente la singola patch in singoli commit, ma esiste un approccio più semplice ed elegante?
Ho provato i comandi immediati git rebase
e git rebase -p
senza fortuna.
Hmm, sei sicuro che sia davvero quello che volevi? S, V e X nel tuo grafico vedono essere commit di unione e quindi non dovrebbero essere presenti come S ', V' e X 'nello stato desiderato. A meno che non contenessero un mucchio di risoluzione del conflitto manuale, suppongo. – Raman