Merge de texto
Un merge de texto combina los cambios de dos versiones de un archivo en un unico resultado editable. Un conflicto aparece cuando dos cambios son incompatibles y hace falta tomar una decision.
Diseno
Esta pantalla muestra tres versiones del mismo archivo.
- El panel izquierdo es tu version con cambios locales.
- El panel central es el resultado. Es el unico panel editable.
- El panel derecho es la version entrante con cambios remotos.
Hay dos disenos de merge:
- Merge con huecos de insercion mantiene los tres paneles alineados con filas de hueco explicitas.
- Merge con conectores usa columnas con conectores para mostrar como se corresponden los cambios relacionados entre paneles.
Para cambiar entre ellos usa el menu Ver o el control segmentado de la parte superior derecha.
Base
Tambien existe una cuarta version: la base. Es la version original de la que partieron ambos lados. Coincide con el modelo de merge de tres vias de Git:
Local → Base ← Remote
↓
Result
En ABDiff, el panel central puede alternar entre Resultado y Base para ayudarte a entender mejor que cambio.
Que es un conflicto?
Un conflicto ocurre cuando ambos lados modifican las mismas lineas de forma distinta. Por ejemplo, el valor original era “blue”, pero ahora un lado dice “green” y el otro “red”. Git no puede determinar que cambio es correcto, asi que requiere una resolucion manual.
Esto ocurre cuando dos personas editan las mismas lineas al mismo tiempo. Si los cambios no se solapan, Git los combina automaticamente. Si se solapan, tienes que resolver el conflicto manualmente.
Resolver un conflicto
Si configuraste Git, ABDiff se abrira cuando Git encuentre un conflicto. El area de resultado queda sin resolver, y tu tarea es definir su contenido. Tienes tres opciones:
- Resolver usando la version local
- Resolver usando la version entrante
- Crear tu propio resultado
- Edita la linea seleccionada (Intro o doble clic)
- O copia lineas desde cualquiera de los dos lados: clic derecho ▸ Copiar seleccion al resultado (⌘→ / ⌘←)
Consejos:
- Amplia la seleccion (⇧↑ / ⇧↓) para copiar varias lineas a la vez.
- Usa ⌘Z para deshacer cualquier cambio.
Marcar como resuelto
Cuando termines, guarda el archivo (Archivo ▸ Guardar o ⌘S). Esto indica a Git que el conflicto ha quedado resuelto.
Si no quieres resolver el conflicto, cierra el archivo sin guardar.
Edicion y navegacion
Navegacion
| Accion | Atajo |
|---|---|
| Fila anterior / siguiente | ↑ / ↓ |
| Panel anterior / siguiente | ← / → |
| Saltar a la primera / ultima fila | ⌘↑ / ⌘↓ |
| Cambio anterior / siguiente | ⌥↑ / ⌥↓ |
| Bloque anterior / siguiente | ⌥↑ / ⌥↓ |
| Cambiar a otro panel | ⇥ |
Copiar
| Accion | Atajo |
|---|---|
| Copiar la seleccion al resultado | ⌘← ⌘→ |
| Ampliar seleccion | ⇧↑ / ⇧↓ |
| Resolver con nuestra version / su version | ⇧⌘→ / ⇧⌘← |
Una linea seleccionada se muestra con un rectangulo gris. Un bloque es un bloque continuo de conflicto o cambio. Las acciones de copia solo se activan cuando modificarian el panel Resultado y cuando la seleccion esta sobre una linea real. Un Shift-clic en una fila tambien amplia la seleccion actual dentro del mismo panel.
Para copiar cambios:
- Usa Copiar para copiar las lineas seleccionadas actualmente.
- Usa Copiar bloque completo para copiar el bloque en el que esta la linea seleccionada.
- Si haces clic derecho dentro de la seleccion actual, la seleccion se mantiene; si haces clic derecho fuera, primero se selecciona esa fila.
- El menu contextual de la fila tambien ofrece Ampliar seleccion hacia arriba / Ampliar seleccion hacia abajo cuando esos movimientos con Shift + flecha estan disponibles.
- Usa Resolver con en la linea seleccionada, ya sea con clic derecho en una linea o desde Editar ▸ Resolver con.
Todas las acciones de copia se pueden deshacer con ⌘Z.
Edicion
| Accion | Atajo |
|---|---|
| Empezar a editar la fila seleccionada de Resultado | Return |
| Empezar a editar directamente una fila de Resultado | Doble clic en la fila |
| Confirmar y pasar a la siguiente fila editable | Return (mientras editas) |
| Confirmar y salir del modo de edicion | Command-Return |
| Descartar el buffer actual de la fila y salir del modo de edicion | Esc o Command-. |
Tambien puedes empezar a editar haciendo doble clic con el raton sobre una fila. Todas las acciones de edicion se pueden deshacer con ⌘Z.
Opciones de vista
El merge de texto expone opciones que cambian como se calcula o se muestra la comparacion. Estas opciones estan disponibles en el menu de opciones.
- Patrones de ignorado reducen las diferencias ruidosas. Consulta Patrones de ignorado.
- Normalizacion JSON convierte la entrada a una forma canonica para que la comparacion tenga sentido semantico. Guardar un archivo normalizado reescribe el archivo de entrada con el formato normalizado.