Quando useresti le diverse strategie di git merge?


0 Answers

In realtà le uniche due strategie che vorrai scegliere sono le nostre se vuoi abbandonare i cambiamenti portati per ramo, ma mantenere il ramo nella storia e la sottostruttura se stai unendo un progetto indipendente nella sottodirectory del superprogetto (come 'git-gui' in ' git 'repository).

la fusione di polpo viene utilizzata automaticamente quando si uniscono più di due rami. la risoluzione è qui principalmente per ragioni storiche e per quando si viene colpiti da casi angolari di strategia di fusione ricorsiva .

Question

Dalla pagina man di git-merge, ci sono un certo numero di strategie di unione che puoi usare.

  • solve - Questo può risolvere solo due teste (cioè il ramo corrente e un altro ramo da cui hai tirato) usando l'algoritmo di fusione a 3 vie. Cerca di individuare con attenzione le ambiguità di fusione incrociate ed è considerato generalmente sicuro e veloce.

  • ricorsivo - Questo può risolvere solo due teste usando l'algoritmo di fusione a 3 vie. Quando esistono 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 questo comporta un minor numero di conflitti di fusione senza causare mis-merges da test eseguiti su commit di merge effettivi presi dalla cronologia di sviluppo del kernel di Linux 2.6. Inoltre, questo può rilevare e gestire le unioni che coinvolgono i nomi. Questa è la strategia di unione predefinita quando si estrae o unisce un ramo.

  • polpo : risolve più di un caso a due teste, ma si rifiuta di eseguire un'unione complessa che richiede una risoluzione manuale. È principalmente pensato per essere utilizzato per raggruppare insieme teste di argomenti. Questa è la strategia di unione predefinita quando si estraggono o si uniscono più rami.

  • nostro - Questo risolve qualsiasi numero di teste, ma il risultato dell'unione è sempre l'attuale capo del ramo. È pensato per essere utilizzato per sostituire la vecchia cronologia di sviluppo dei rami laterali.

  • sottostruttura - Questa è una strategia ricorsiva modificata. Quando si uniscono gli alberi A e B, se B corrisponde a un sottoalbero di A, B viene prima regolato per adattarsi alla struttura ad albero di A, invece di leggere gli alberi allo stesso livello. Questa regolazione viene eseguita anche sull'albero degli antenati comuni.

Quando dovrei specificare qualcosa di diverso da quello predefinito? Per quali scenari è meglio scegliere?




Related