2010-03-23 11 views
12

Digamos que estoy haciendo una rebase B de una rama en master y hay un conflicto. git abre la herramienta de combinación predeterminada con 3 archivos como entrada: file.LOCAL, file.BASE, file.REMOTE (reciben un nombre un poco diferente, pero LOCAL, BASE y REMOTE están en los nombres de los archivos y es cómo se distinguen)¿Puedo cambiar el nombre de LOCAL, REMOTO y BASE como se usa en git mergetool?

Ahora, de acuerdo con la página man de mergetool: $ LOCAL se establece con el nombre de un archivo temporal que contiene el contenido del archivo en la rama actual; $ REMOTE establece el nombre de un archivo temporal que contiene el contenido del archivo que se fusionará, y $ BASE establecido en el nombre de un archivo temporal que contiene la base común para la fusión.

Eso realmente no tiene sentido para mí. LOCAL es el estado actual de la sucursal. Donde me pierdo es BASE y REMOTO. Entonces mi pregunta es:

¿Es posible hacer que git use el nombre de la sucursal en lugar de LOCAL y nombres similarmente más significativos además de BASE y REMOTO? Por ejemplo, si el nombre de la sucursal es FeatureX y BASE = el archivo tal como existe en el maestro, ¿hay alguna manera de que git sustituya FeatureX por LOCAL y master por BASE, de modo que sea más evidente de dónde proviene la fuente? ? Esto es especialmente un problema cuando se hace una rebase.

Respuesta

8

¿Es posible hacer git utilizar el nombre de la sucursal en lugar de LOCAL

Yo no lo creo, pero si se declara en su mergetool a graphical merge tool, puede llamar a esa herramienta externa con el título de su elección:

(extracto de un guión calll herramienta de combinación)

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" 

de esta manera, se puede ver más fácilmente qué es qué.

3

No estoy del todo seguro de que esta explicación sea correcta, pero BASE será el punto en el que ambas versiones del archivo sean las mismas. Puede ser lo que llamas el 'padre' en un árbol de Git.

Cuando divergieron, terminaron con LOCAL y REMOTO que entran en conflicto entre sí.

Cuestiones relacionadas