2010-03-23 16 views
12

Diciamo che sto facendo un rebase B di un ramo sul master e c'è un conflitto. git apre lo strumento di unione predefinito con 3 file come input: file.LOCAL, file.BASE, file.REMOTE (vengono denominati in modo leggermente diverso, ma LOCAL, BASE e REMOTE sono nei nomi dei file ed è il modo in cui vengono distinti).Posso rinominare LOCAL, REMOTE e BASE come usato in git mergetool?

Ora, secondo la pagina man di mergetool: $ LOCAL è impostato sul nome di un file temporaneo contenente il contenuto del file sul ramo corrente; $ REMOTE impostato sul nome di un file temporaneo contenente i contenuti del file da unire e $ BASE impostato sul nome di un file temporaneo contenente la base comune per l'unione.

Questo non ha senso per me. LOCALE è lo stato attuale del ramo. Dove mi perdo è BASE e REMOTE. Quindi la mia domanda è:

E 'possibile fare in modo che git usi il nome del ramo invece di LOCAL e nomi altrettanto più significativi diversi da BASE e REMOTE? Ad esempio, se il nome del ramo è FeatureX e BASE = il file così com'è nel master, c'è un modo per ottenere git per sostituire FeatureX per LOCAL e master per BASE, in modo che sia più evidente da dove proviene la sorgente ? Questo è particolarmente un problema quando si fa un rebase.

risposta

8

E 'possibile rendere git utilizzare il nome del ramo invece di LOCAL

Io non la penso così, ma se si dichiara nella vostra mergetool a graphical merge tool, si può chiamare tale strumento esterno con titolo di la vostra scelta:

(estratto di uno script Calll strumento di unione)

t1="'$4 (current branch)'" 
t2="'(common ancestor)'" 
t3="'(to be merged)'" 

    "C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -wait -merge -3 -a2 -title1:${t1} -title2:${t2} -title3:${t3} "$alocal" "$base" "$remote" "$result" 

in questo modo, è più facile vedere cosa è cosa.

3

Non sono del tutto sicuro che questa spiegazione sia corretta, ma BASE sarà il punto in cui entrambe le versioni del file erano uguali. Potrebbe essere quello che chiami "genitore" in un albero Git.

Quando si sono discostati, si è concluso con LOCAL e REMOTE che sono in conflitto tra loro.