Al fusionar sucursales bajo control de origen, a menudo existe el problema de un conflicto de fusión con otros desarrolladores.
Sé que podemos usar vimdiff para diferenciar los cambios de código contra el control de código fuente , pero también existe una forma de usar vimdiff para ayudar a resolver conflictos de fusión.
Personalmente, estoy más interesado en git, pero sería útil entender si hay complementos / técnicas para otras herramientas / sistemas de control de código fuente.
vimdiff
version-control-systems
merge
Martin York
fuente
fuente
feature rich UI
es engañoso; vimdiff puede no tener una buena interfaz de usuario, definitivamente tiene muchas funciones. También encuentro vim un entorno mucho más productivo que todos los editores de GUI que he usado (pero lo he usado durante mucho tiempo y fue una curva de aprendizaje empinada). Tengo más curiosidad si Meld hace algo que vim no hace que haría que valiera la pena incluso mirar.Respuestas:
Normalmente uso git en la línea de comando.
Pero cuando hay un conflicto de fusión, uso Vim para resolverlos (personalmente lo hago con el complemento fugitivo). Nota: fugitivo es bueno para mucha manipulación de git desde Vim. Mi característica favorita es la diferencia de 3 vías de un conflicto de fusión.
git admite esto en vimdiff a través de git mergetool. He instalado fugitivo pero puedes configurarlo manualmente (Gracias @ Jay Thompson).
Configuración manual:
El resultado es ligeramente diferente al que se describe a continuación (no lo he usado personalmente). Pero el principio es el mismo, pero tiene una cuarta ventana en la parte inferior que contiene el resultado.
Configurar con fugitivo
vim-fugitive es un complemento git wrapper / integración para Vim; puede hacer muchas cosas, y resolver conflictos es una de ellas.
Ahora puede extraer y obtener texto de las otras dos vistas en la vista central (que contendrá todas las correcciones manuales). Una vez que haya resuelto todos los conflictos manualmente, simplemente salga de vimdiff
Aunque puede usar
:diffget <view number>
y:diffput <view number>
para tirar y empujar cosas entre las vistas. Personalmente no me parece muy útil. Todo el código ya está en la vista central. Así que solo me gusta editar esa vista manualmente hasta que se resuelva el conflicto. Sin embargo, poder ver ambas versiones del código a ambos lados de la ventana de mi editor es extremadamente útil.También una muy buena demostración de su uso aquí
fuente
git config --global merge.tool vimdiff
y luego ejecutargit mergetool
para iniciar vim en modo diff.diff3 -E
. Entonces, las imágenes anteriores se generan a partir de archivos que tienen estos marcadores en ellas.