2010-10-06 16 views
5

Mi piacerebbe forzare git a sempre unione usando una risoluzione di conflitti (di tipo) a 3 vie. Inoltre, voglio farlo fino al punto di poter scegliere le singole linee.Unione di righe di codice selettive utilizzando Git?

Al momento sto unendo due rami. Tuttavia, se possibile, mi piacerebbe sapere come eseguire questa attività anche quando si uniscono più rami.

risposta

2

Git tenta di eseguire l'unione a 3 vie per impostazione predefinita (la strategia recursive per 2 teste e la strategia octopus per 3+ teste).

Se volete vedere opzioni di risoluzione a 3 vie in cui si fondono manualmente, provare a impostare l'opzione di configurazione per merge.conflictstylediff3.

(Vedi la sezione Configurazione del git-merge man page per i dettagli su questa opzione.)

0

Il post sul blog "Five advanced Git merge techniques" dà ancora più dettagli sulla impostazione diff3:

conflitti Accendere diff3 utilizzando git config --global merge.conflictstyle diff3.
Lo stile conflitto diff3 aggiunge una sezione aggiuntiva tra il nuovo ||||||| marcatore e ======= marcatori, che indica:

  • il contenuto originale della sezione,
  • con le modifiche di cui sopra e
  • loro (il ramo di seguito sono riportate le modifiche apportate a).

Anche senza uno strumento diff, il comando git show può aiutare:

Quando si è all'interno di una fusione, è possibile utilizzare una speciale :N: sintassi, dove N è un numero, per selezionare automaticamente uno dei genitori di unione.

  • 1 seleziona la base comune commit (la revisione in basso),
  • 2 seleziona la versione ("mine"), e
  • 3 seleziona la loro versione (la revisione più alto).

Così git show :3:foobar.txt mostra la versione a monte del foobar.txt.

Problemi correlati