Pregunta

Tengo que resolver algunos conflictos después de un git pull .

$ git pull
CONFLICT (rename/add): Renamed vignette_generator_mashed.h->vision_problem_8.h in 49423dd0d47abe6d839a783b5517bdfd200a202f. vision_problem_8.h added in HEAD
Added as vision_problem_8.h~HEAD_1 instead
Removed vignette_generator_cross_square.cc
Automatic merge failed; fix conflicts and then commit the result.

Así que busqué en Google un poco y encontré personas que decían que usaba git mergetool . Pero esto es lo que obtuve:

$ git mergetool
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
No files need merging
$ git mergetool opendiff
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
opendiff: file not found

Entonces, ¿significa que tengo que instalar algo?

¿Qué sucede si simplemente quiero que la versión de git pull sobrescriba todo?

¿Fue útil?

Solución

No necesitas mergetool para esto. Se puede resolver con bastante facilidad manualmente.

Su conflicto es que sus confirmaciones locales agregaron un archivo, vision_problem_8.h , que una confirmación remota también creó, mediante un cambio de nombre de vignette_generator_mashed.h . Si ejecuta ls -l vision_problem_8.h * , probablemente verá varias versiones de este archivo que git ha conservado para usted. Uno de ellos será tuyo, otro de ellos será la versión remota. Puede usar un editor o cualquier herramienta que desee para resolver los contenidos en conflicto. Cuando haya terminado, git add los archivos afectados y comprométase a completar la fusión.

Si solo desea utilizar la versión de confirmación remota, puede mover la copia que no escribió a su lugar y git add .


Con respecto a las herramientas de fusión, eche un vistazo a git help mergetool . Básicamente, intentará ejecutar cada una de las posibilidades incluidas hasta que encuentre una, o usará una que haya configurado explícitamente.

Otros consejos

Creo que acabas de olvidar " -t " cambie a su línea de comando. Según la página de ayuda de git, significa "-t, --tool = " así que hace lo que pretendías.

Prueba:

git mergetool -t gvimdiff

Por supuesto, puede usar su herramienta de fusión preferida en lugar de la mía gvimdiff, la fusión también es excelente ...

Si ejecuta su fusión desde un subdirectorio de su proyecto, git ejecutará la fusión para todo su proyecto. Sin embargo, mergetool solo puede ver (y combinar) archivos en o debajo del directorio de trabajo. Por lo tanto, si ocurre este escenario, asegúrese de intentar ejecutar la resolución de conflictos desde el directorio de nivel superior en su proyecto.

¿Qué sucede si simplemente quiero que la versión de git pull sobrescriba todo? Si solo quieres eso, debes usar:

 git fetch
 git reset --hard origin/your-branch-name
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top