repositorio - git remote
Problemas de Git y DiffTool: ¿A qué apuntan LOCAL y REMOTO? (3)
He estado trabajando para que Tortoisemerge funcione como la opción difftool en Git con mi archivo .gitconfig que muestra actualmente:
[diff]
tool = tortoise
[difftool "tortoise"]
cmd = tortoisemerge.exe -mine:$LOCAL -base:$REMOTE
[difftool]
prompt = false
De acuerdo con los documentos de fusión de tortuga , el comando ''mío'' indica qué archivo se mostrará a la derecha, en una diferencia bidireccional.
Mi pregunta es, ¿a qué apuntan realmente las variables LOCAL y REMOTO provistas por GIT? La documentation es un poco vaga afirmando que
LOCAL se establece en el nombre del archivo temporal que contiene los contenidos de la imagen previa de diff y REMOTE se configura en el nombre del archivo temporal que contiene los contenidos de la imagen posterior de diff.
El problema surge cuando modifico un archivo y luego entro ''git difftool'' tortoisemerge se inicia con el archivo del directorio de trabajo en la IZQUIERDA y no en el derecho como supongo. Sé que simplemente puedo cambiar los comandos ''míos'' y ''locales'', pero estaba tratando de averiguar a qué apuntan los puntos locales / remotos y la mejor manera de resolver este problema.
Creo que eso significa que $LOCAL
es siempre la a/whatever
en la salida de diferencia, mientras que $REMOTE
es la b/whatever
. En otras palabras, si lo haces:
git difftool master experiment -- Makefile
$LOCAL
será un archivo temporal que muestra el estado de Makefile
en la rama master
, mientras que $REMOTE
será un archivo temporal que muestra su estado en la rama del experiment
.
Si solo ejecuta:
git difftool
... que le muestra la diferencia entre el índice y su árbol de trabajo, por lo que para cada archivo con diferencias, $LOCAL
será un archivo temporal que es igual a la versión del archivo en el índice, mientras que $REMOTE
será el Versión del archivo en su árbol de trabajo.
Estoy usando TortoiseSvn para fusionar y diferenciar y está funcionando como se esperaba. Mientras que en diff, muestra mi copia de trabajo a la derecha. Mi .gitconfig con TortoiseSvn es el siguiente
[diff]
tool = tortoise
[merge]
tool = tortoise
[mergetool "tortoise"]
cmd = TortoiseMerge.exe -base:/"$BASE/" -mine:/"$LOCAL/" -theirs:/"$REMOTE/" -merged:/"$MERGED/"
[difftool "tortoise"]
cmd = tortoisemerge.exe -mine:/"$REMOTE/" -base:/"$LOCAL/"
hay 4 componentes para esto (tenga en cuenta que antes de este paso, ya habría hecho un registro local).
- El check-in local que tiene tu árbol git: LOCAL
- El jefe del repositorio remoto (que se va a fusionar): REMOTO
- ancestro común a ambos LOCAL y REMOTO: BASE
- El archivo que se escribirá como resultado: MERGED .