guardar - git config--global
Configurando la herramienta diff con.gitconfig? (6)
¿Cómo configuro git para usar una herramienta diferente para diferir con el archivo .gitconfig? Tengo esto en mi .gitconfig:
[diff]
tool = git-chdiff #also tried /bin/git-chdiff
y no funciona, solo abre la línea regular de comando diff. Cuando lo hago
export GIT_EXTERNAL_DIFF=git-chdiff
luego, git diff abrirá la herramienta de diferenciación externa (por lo que sé que la secuencia de comandos externa diff funciona bien). ¿Tengo algún problema con mi configuración .gitconfig para la herramienta diff?
Agregar uno de estos bloques me funciona para usar kdiff3 para mis entornos de desarrollo de Windows y Linux. Es una buena herramienta de fusión y diff consistente multiplataforma.
LINUX
[difftool "kdiff3"] path = /usr/bin/kdiff3 trustExitCode = false [difftool] prompt = false [diff] tool = kdiff3 [mergetool "kdiff3"] path = /usr/bin/kdiff3 trustExitCode = false [mergetool] keepBackup = false [merge] tool = kdiff3
WINDOWS
[difftool "kdiff3"] path = C:/Progra~1/KDiff3/kdiff3.exe trustExitCode = false [difftool] prompt = false [diff] tool = kdiff3 [mergetool "kdiff3"] path = C:/Progra~1/KDiff3/kdiff3.exe trustExitCode = false [mergetool] keepBackup = false [merge] tool = kdiff3
Esta es la parte de mi ~ / .gitconfig donde configuro las herramientas diff y merge. Me gusta diffmerge por SourceGear. (Me gusta mucho, como una cuestión de hecho).
[merge]
tool = diffmerge
[mergetool "diffmerge"]
cmd = "diffmerge --merge --result=/"$MERGED/" /"$LOCAL/" /"$(if test -f /"$BASE/"; then echo /"$BASE/"; else echo /"$LOCAL/"; fi)/" /"$REMOTE/""
trustExitCode = false
[diff]
tool = diffmerge
[difftool "diffmerge"]
cmd = diffmerge /"$LOCAL/" /"$REMOTE/"
Entonces, ves, estás definiendo una herramienta llamada "diffmerge" en la línea [difftool "diffmerge"]
. Luego estoy configurando la herramienta "diffmerge" como la predeterminada en la sección [diff] tool =
.
Obviamente tengo el comando "diffmerge" en mi camino, aquí. De lo contrario, tendría que dar una ruta completa al ejecutable.
Forma adicional de hacerlo (desde la línea de comando):
git config --global diff.tool tkdiff
git config --global merge.tool tkdiff
git config --global --add difftool.prompt false
Las dos primeras líneas establecerán difftool y mergetool en tkdiff
, cambia eso según tus preferencias. La tercera línea desactiva el molesto mensaje de modo que cada vez que presionas git difftool
se iniciará automáticamente el difftool.
Git ofrece una amplia gama de herramientas preconfiguradas "preconfiguradas" (kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, diffuse, opendiff, p4merge y araxis), y también le permite para especificar el tuyo Para usar uno de los difftools preconfigurados (por ejemplo, "vimdiff"), agregue las siguientes líneas a su ~/.gitconfig
:
[diff]
tool = vimdiff
Especificar su propia difftool, por otro lado, lleva un poco más de trabajo, ver ¿Cómo veo la salida ''git diff'' con un programa visual diff?
Otros han respondido al 99% sobre esto, pero hay un paso omitido. (Mi respuesta vendrá de OSX, así que tendrá que cambiar las rutas de archivos en consecuencia)
Usted hace estos cambios a su ~/.gitconfig
:
[diff]
tool = diffmerge
[difftool "diffmerge"]
cmd = /Applications/Diffmerge.app/Contents/MacOS/diffmerge $LOCAL $REMOTE
Esto arreglará la herramienta diff. También puede corregir esto sin editar el ~/.gitconfig
directamente al ingresar estos comandos desde la terminal:
git config --global diff.tool diffmerge
git config --global difftool.diffmerge.cmd "/Applications/DiffMerge.appContents/MacOS/diffmerge /$LOCAL /$REMOTE"
El 1% que todos los demás no mencionaron es que al usar esto no puedes ejecutar git diff myfile.txt
, necesitas ejecutar git difftool myfile.txt
.
Reproducción de mi respuesta de this hilo que era más específico para establecer más allá de la herramienta de comparación como diff para Git. Todos los detalles que he compartido son igualmente útiles para cualquier herramienta de diff en general, así que compartirlo aquí:
El primer comando que ejecutamos es el siguiente:
git config --global diff.tool bc3
El comando anterior crea la entrada siguiente en .gitconfig
encuentra en el directorio %userprofile%
:
[diff]
tool = bc3
A continuación, ejecute el comando below ( ejecutar este comando es redundante en este caso particular y solo se requiere en algunos casos especializados. Lo sabrá en poco tiempo ):
git config --global difftool.bc3.path "c:/program files/beyond compare 3/bcomp.exe"
El comando anterior crea la entrada siguiente en el archivo .gitconfig
:
[difftool "bc3"]
path = c:/program files/Beyond Compare 3/bcomp.exe
Lo que hay que saber aquí es la clave bc3
. Esta es una clave bien conocida de git correspondiente a una versión particular de herramientas de comparación bien conocidas disponibles en el mercado ( bc3
corresponde a la 3ra versión de la herramienta Beyond Compare). Si desea ver todas las claves predefinidas, simplemente ejecute git difftool --tool-help
command en git bash. Vuelve debajo de la lista:
vimdiff
vimdiff2
vimdiff3
araxis
bc
bc3
codecompare
deltawalker
diffmerge
diffuse
ecmerge
emerge
examdiff
gvimdiff
gvimdiff2
gvimdiff3
kdiff3
kompare
meld
opendiff
p4merge
tkdiff
winmerge
xxdiff
Puede usar cualquiera de las teclas anteriores o definir una clave personalizada propia. Si desea configurar una nueva herramienta por completo (o una versión recientemente publicada de la herramienta conocida) que no se correlaciona con ninguna de las claves enumeradas anteriormente, puede asignarla a cualquiera de las claves enumeradas anteriormente o a una nueva. llave personalizada propia.
¿Qué sucede si tiene que configurar una herramienta de comparación que es
- Absolutamente nuevo en el mercado
O
- ¿Se lanzó una nueva versión de una herramienta conocida que no está asignada a ninguna clave predefinida en git ?
Al igual que en mi caso, había instalado más allá de la comparación 4. Más allá de la comparación es una herramienta muy conocida para git pero su versión 4 no está asignada a ninguna de las claves existentes de forma predeterminada. Entonces puedes seguir cualquiera de los siguientes enfoques:
Puedo mapear más allá de la herramienta de comparación 4 a la clave ya existente
bc3
que corresponde a la versión más allá de comparar 3. No tenía más que comparar la versión 3 en mi computadora, así que no me importó. Si quisiera, podría haberlo asignado a cualquiera de las claves predefinidas en la lista anterior, por ejemplo,examdiff
.Si asigna una versión conocida de las herramientas para que se apropien de la clave ya existente / conocida, entonces no necesitaría ejecutar el segundo comando ya que su ruta de instalación ya es conocida por git .
Por ejemplo, si hubiera instalado más allá de la versión de comparación 3 en mi caja, tener la siguiente configuración en mi archivo
.gitconfig
hubiera sido suficiente para ponerme en marcha:[diff] tool = bc3
Pero si desea cambiar la herramienta asociada predeterminada, terminará mencionando el atributo de
path
separado para que git conozca la ruta desde donde debe iniciarse el ejecutable de la herramienta nueva. Aquí está la entrada que zorros git para lanzar más allá de comparar 4 en su lugar. Tenga en cuenta la ruta del exe:[difftool "bc3"] path = c:/program files/Beyond Compare 4/bcomp.exe
El enfoque más limpio es definir una nueva clave para la nueva herramienta de comparación o una nueva versión de una herramienta bien conocida. Como en mi caso,
bc4
una nueva clavebc4
para que sea fácil de recordar. En tal caso, debe ejecutar dos comandos en total, pero su segundo comando no configurará la ruta del ejecutable de su nueva herramienta. En su lugar, debe establecer el atributocmd
para su nueva herramienta como se muestra a continuación:git config --global diff.tool bc4 git config --global difftool.bc4.cmd "/"C://Program Files//Beyond Compare 4//bcomp.exe/" -s /"/$LOCAL/" -d /"/$REMOTE/""
Al ejecutar los comandos anteriores se crean las siguientes entradas en su archivo
.gitconfig
:[diff] tool = bc4 [difftool "bc4"] cmd = /"C://Program Files//Beyond Compare 4//bcomp.exe/" -s /"$LOCAL/" -d /"$REMOTE/"
Recomiendo encarecidamente que siga el método n.º 2 para evitar confusiones en el futuro.