Dalla pagina man su git-merge, ci sono una serie di strategie di unione che puoi usare.
risoluzione - Questo può risolvere solo due teste (cioè il ramo corrente e un altro ramo da cui hai estratto) usando l'algoritmo di unione a 3 vie. Cerca di rilevare attentamente le ambiguità di unione incrociate ed è generalmente considerato sicuro e veloce.
ricorsivo - Questo può risolvere solo due teste usando l'algoritmo di unione a 3 vie. Quando ci sono più antenati comuni che possono essere utilizzati per l'unione a 3 vie, crea un albero unito degli antenati comuni e lo utilizza come albero di riferimento per l'unione a 3 vie. È stato segnalato che ciò comporta un minor numero di conflitti di unione senza causare errori di fusione da parte di test eseguiti su commit di unione effettivi tratti dalla cronologia di sviluppo del kernel Linux 2.6. Inoltre, questo può rilevare e gestire le fusioni che coinvolgono i nomi. Questa è la strategia di unione predefinita quando si estrae o unisce un ramo.
polpo - Questo risolve più del caso a due teste, ma si rifiuta di fare l'unione complessa che richiede una risoluzione manuale. È principalmente pensato per essere usato per raggruppare insieme le teste di rami di argomenti. Questa è la strategia di unione predefinita quando si estraggono o si uniscono più rami.
nostra - Questo risolve un numero qualsiasi di teste, ma il risultato della fusione è sempre la testa del ramo corrente. È pensato per essere utilizzato per sostituire la vecchia storia di sviluppo dei rami laterali.
subtree - Questa è una strategia ricorsiva modificata. Quando si uniscono gli alberi A e B, se B corrisponde a una sottostruttura di A, B viene prima regolato per abbinare la struttura ad albero di A, invece di leggere gli alberi allo stesso livello. Questa regolazione viene eseguita anche sull'albero degli antenati comune.
Quando devo specificare qualcosa di diverso rispetto al valore predefinito? Per quali scenari sono i migliori?