Nuestro equipo especializado pasados muchos días de trabajo y recopilación de de información, obtuvimos los datos necesarios, queremos que te sea de utilidad en tu plan.
Solución:
¿Cómo configuro y uso Meld como mi git difftool?
git difftool muestra la diferencia usando un programa de diferencias GUI (es decir, Meld) en lugar de mostrar la salida de diferencias en su terminal.
Aunque puede configurar el programa GUI en la línea de comando usando -t
tiene más sentido configurarlo en tu .gitconfig
expediente. [Note: See the sections about escaping quotes and Windows paths at the bottom.]
# Add the following to your .gitconfig file.
[diff]
tool = meld
[difftool]
prompt = false
[difftool "meld"]
cmd = meld "$LOCAL" "$REMOTE"
[Note: These settings will not alter the behaviour of git diff
which will continue to function as usual.]
Tu usas git difftool
exactamente de la misma manera que usa git diff
. p.ej
git difftool file_name
git difftool file_name
git difftool file_name
Si está configurada correctamente, se abrirá una ventana Meld mostrando el diff usando una interfaz GUI.
El orden de los paneles de la ventana de Meld GUI se puede controlar por el orden de $LOCAL
y $REMOTE
en cmd
, es decir, qué archivo se muestra en el panel izquierdo y cuál en el panel derecho. Si los quiere al revés, simplemente cámbielos de esta manera:
cmd = meld "$REMOTE" "$LOCAL"
Finalmente, el prompt = false
line simplemente evita que git le pregunte si desea iniciar Meld o no, de forma predeterminada, git emitirá un mensaje.
¿Cómo configuro y uso Meld como mi herramienta git mergetool?
git mergetool le permite utilizar un programa de combinación de GUI (es decir, Meld) para resolver los conflictos de combinación que se han producido durante una combinación.
Al igual que difftool, puede configurar el programa GUI en la línea de comando usando -t
pero, como antes, tiene más sentido configurarlo en su .gitconfig
expediente. [Note: See the sections about escaping quotes and Windows paths at the bottom.]
# Add the following to your .gitconfig file.
[merge]
tool = meld
[mergetool "meld"]
# Choose one of these 2 lines (not both!) explained below.
cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED"
cmd = meld "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED"
NO usas git mergetool
para realizar una fusión real. Antes de usar git mergetool
realizas una fusión de la forma habitual con git. p.ej
git checkout master
git merge branch_name
Si hay un conflicto de fusión, git mostrará algo como esto:
$ git merge branch_name
Auto-merging file_name
CONFLICT (content): Merge conflict in file_name
Automatic merge failed; fix conflicts and then commit the result.
En este punto file_name
contendrá el archivo parcialmente combinado con la información del conflicto de combinación (ese es el archivo con todos los >>>>>>>
y <<<<<<<
entradas en él).
Mergetool ahora se puede utilizar para resolver los conflictos de fusión. Lo comienzas muy fácilmente con:
git mergetool
Si está configurado correctamente, se abrirá una ventana Meld mostrando 3 archivos. Cada archivo estará contenido en un panel separado de su interfaz GUI.
En el ejemplo .gitconfig
entrada anterior, se sugieren 2 líneas como [mergetool "meld"]
cmd
línea. De hecho, hay todo tipo de formas para que los usuarios avanzados configuren el cmd
línea, pero eso está más allá del alcance de esta respuesta.
Esta respuesta tiene 2 alternativas cmd
líneas que, entre ellas, atenderán a la mayoría de los usuarios y serán un buen punto de partida para los usuarios avanzados que deseen llevar la herramienta al siguiente nivel de complejidad.
En primer lugar, esto es lo que significan los parámetros:
$LOCAL
es el archivo en la rama actual (por ejemplo, maestro).$REMOTE
es el archivo de la rama que se está fusionando (por ejemplo, branch_name).$MERGED
es el archivo parcialmente fusionado con la información del conflicto de fusión en él.$BASE
es el ancestro de compromiso compartido de$LOCAL
y$REMOTE
, esto es para decir el archivo como estaba cuando la rama que contiene$REMOTE
fue creado originalmente.
Te sugiero que uses:
[mergetool "meld"]
cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED"
o:
[mergetool "meld"]
cmd = meld "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED"
# See 'Note On Output File' which explains --output "$MERGED".
La elección es si usar $MERGED
o $BASE
entre $LOCAL
y $REMOTE
.
De cualquier manera, Meld mostrará 3 paneles con $LOCAL
y $REMOTE
en los paneles izquierdo y derecho y $MERGED
o $BASE
en el panel del medio.
En AMBOS casos, el panel central es el archivo que debe editar para resolver los conflictos de fusión. La diferencia es solo en qué posición de edición de inicio preferiría; $MERGED
para el archivo que contiene el archivo parcialmente combinado con la información de conflicto de combinación o $BASE
para el ancestro de compromiso compartido de $LOCAL
y $REMOTE
. [Since both cmd
lines can be useful I keep them both in my .gitconfig
file. Most of the time I use the $MERGED
line and the $BASE
line is commented out, but the commenting out can be swapped over if I want to use the $BASE
line instead.]
Nota sobre el archivo de salida: no se preocupe porque --output "$MERGED"
se utiliza en cmd
independientemente de si $MERGED
o $BASE
fue utilizado anteriormente en el cmd
línea. los --output
La opción simplemente le dice a Meld en qué nombre de archivo git quiere que se guarde el archivo de resolución de conflictos. Meld guardará sus ediciones de conflicto en ese archivo independientemente de si usa $MERGED
o $BASE
como punto de edición inicial.
Después de editar el panel central para resolver los conflictos de fusión, simplemente guarde el archivo y cierre la ventana Meld. Git hará la actualización automáticamente y el archivo en la rama actual (por ejemplo, maestro) ahora contendrá lo que haya terminado en el panel central.
git habrá realizado una copia de seguridad del archivo parcialmente fusionado con la información del conflicto de fusión añadiendo .orig
al nombre de archivo original. p.ej file_name.orig
. Después de comprobar que está satisfecho con la fusión y ejecutar las pruebas que desee hacer, el .orig
el archivo se puede eliminar.
En este punto, ahora puede hacer un compromiso para confirmar los cambios.
Si, mientras edita los conflictos de fusión en Meld, desea abandonar el uso de Meld, salga de Meld sin guardar el archivo de resolución de fusión en el panel central. git responderá con el mensaje file_name seems unchanged
y luego pregunta Was the merge successful? [y/n]
, si tu respondes n
entonces se cancelará la resolución del conflicto de fusión y el archivo permanecerá sin cambios. Tenga en cuenta que si ha guardado el archivo en Meld en algún momento, no recibirá la advertencia y el mensaje de git. [Of course you can just delete the file and replace it with the backup .orig
file that git made for you.]
Si tiene más de 1 archivo con conflictos de fusión, git abrirá una nueva ventana de Meld para cada uno, una tras otra hasta que todo esté listo. No se abrirán todos al mismo tiempo, pero cuando termine de editar los conflictos en uno y cierre Meld, git abrirá el siguiente, y así sucesivamente hasta que se hayan resuelto todos los conflictos de fusión.
Sería sensato crear un proyecto ficticio para probar el uso de git mergetool
antes de usarlo en un En Vivo proyecto. Asegúrese de usar un nombre de archivo que contenga un espacio en su prueba, en caso de que su sistema operativo requiera que escape las comillas en el cmd
línea, ver más abajo.
Escapar de personajes de comillas
Es posible que algunos sistemas operativos necesiten tener las comillas en cmd
escapado. Los usuarios menos experimentados deben recordar que las líneas de comando de configuración deben probarse con nombres de archivo que incluyan espacios, y si el cmd
las líneas no funcionan con los nombres de archivo que incluyen espacios, intente escapar de las comillas. p.ej
cmd = meld "$LOCAL" "$REMOTE"
En algunos casos, puede ser necesario un escape de cotización más complejo. El primero de los enlaces de ruta de Windows a continuación contiene un ejemplo de escape triple de cada cita. Es aburrido pero a veces necesario. p.ej
cmd = meld \"$LOCAL\" \"$REMOTE\"
Rutas de Windows
Los usuarios de Windows probablemente necesitarán una configuración adicional agregada a Meld cmd
líneas. Es posible que necesiten utilizar la ruta completa para meldc
, que está diseñado para ser llamado en Windows desde la línea de comando, o pueden necesitar o querer usar un contenedor. Deberían leer el Desbordamiento de pila páginas enlazadas a continuación que tratan sobre la configuración del Meld correcto cmd
línea para Windows. Como soy un usuario de Linux, no puedo probar los distintos sistemas de Windows. cmd
líneas y no tengo más información sobre el tema que no sea recomendar el uso de mis ejemplos con la adición de una ruta completa a Meld o meldc
o agregando la carpeta del programa Meld a su path
.
- Git Diff y Meld en Windows
- Cómo configurar Meld como git mergetool
- Git mergetool con Meld en Windows
Ignorar los espacios en blanco finales con Meld
Meld tiene una serie de preferencias que se pueden configurar en la GUI.
En las preferencias Text Filters
tab hay varios filtros útiles para ignorar cosas como comentarios al realizar una diferencia. Aunque hay filtros para ignorar All whitespace
y Leading whitespace
, no hay ignorar Trailing whitespace
filter (esto se ha sugerido como una adición en la lista de correo de Meld, pero no está disponible en mi versión).
Ignorar los espacios en blanco finales suele ser muy útil, especialmente cuando se colabora, y se puede agregar manualmente fácilmente con una simple expresión regular en las preferencias de Meld Text Filters
pestaña.
# Use either of these regexes depending on how comprehensive you want it to be.
[ t]*$
[ trfv]*$
Espero que esto ayude a todos.
Si bien la otra respuesta es correcta, esta es la forma más rápida de seguir adelante y configurar Meld como su herramienta de diferencia visual. Simplemente copie / pegue esto:
git config --global diff.tool meld
git config --global difftool.prompt false
Ahora corre git difftool
en un directorio y Meld se lanzará para cada archivo diferente.
Nota al margen: Meld es sorprendentemente lento para comparar archivos CSV, y ninguna herramienta de diferencias de Linux que he encontrado es más rápida que esta herramienta de Windows llamada Compare It! (última actualización en 2010).
Para ventanas. Ejecute estos comandos en Git Bash:
git config --global diff.tool meld
git config --global difftool.meld.path "C:Program Files (x86)MeldMeld.exe"
git config --global difftool.prompt false
git config --global merge.tool meld
git config --global mergetool.meld.path "C:Program Files (x86)MeldMeld.exe"
git config --global mergetool.prompt false
(Actualice la ruta del archivo para Meld.exe si el suyo es diferente).
Para Linux. Ejecute estos comandos en Git Bash:
git config --global diff.tool meld
git config --global difftool.meld.path "/usr/bin/meld"
git config --global difftool.prompt false
git config --global merge.tool meld
git config --global mergetool.meld.path "/usr/bin/meld"
git config --global mergetool.prompt false
Puedes verificar la ruta de Meld usando este comando:
which meld
Aquí puedes ver las reseñas y valoraciones de los lectores
Si guardas algún reparo o forma de progresar nuestro post eres capaz de ejecutar una interpretación y con mucho placer lo observaremos.