Al aplicar un parche, ¿hay alguna forma de resolver los conflictos?


Estoy en Windows.

Por varias razones tenemos múltiples instancias de git de diferentes ramas svn.

Muchas veces quiero solucionar un problema en el repositorio A, generar un parche y aplicarlo al repositorio B. Esto funciona bien excepto si hay conflictos.

Cuando rebase, simplemente hago clic derecho en la carpeta y uso tortioseGit y selecciono la opción resolver. Esto trae una buena interfaz gráfica de usuario que me permite trabajar a través de mis conflictos.

¿hay alguna manera de lograr esto con ¿trozos de parche rechazados?

Aquí está mi enfoque actual para crear/aplicar los parches

git format-patch master --stdout > c:\\patch\\file.patch
git apply --reject --ignore-space-change --ignore-whitespace c:\\patch\\file.patch
Author: max630, 2013-04-24

4 answers

Para generar su parche haga lo siguiente:

git format-patch --stdout first_commit^..last_commit > changes.patch

Ahora, cuando esté listo para aplicar los parches:

git am -3 < changes.patch

El -3 hará una fusión de tres vías si hay conflictos. En este punto, puede hacer un git mergetool si desea ir a una interfaz gráfica de usuario o simplemente fusionar manualmente los archivos utilizando vim (el estándar <<<<<<, ||||||, >>>>>> resolución de conflictos).

 178
Author: g19fanatic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-23 08:58:50

Si con frecuencia se encuentra con el mismo conjunto de conflictos al aplicar parches, cambiar de base o fusionar, puede usar la función git rerere (reuse recorded resolution). Esto le permite predefinir cómo deben resolverse los conflictos en función de cómo los resolvió en el pasado. Véase http://git-scm.com/blog/2010/03/08/rerere.html para detalles de cómo funciona esto.

 8
Author: mplf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-11 02:31:33

TortoiseGit tiene una función de fusión que puede abrir archivos de parches.

Hay una foto de él aquí.

 3
Author: ams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-13 15:41:11

Mi enfoque es:

  • Crear una"Integración" -Rama donde los archivos son idénticos
  • Aplique el parche a esta rama de integración
  • Merge o rebase a master (no sé si rebase es útil aquí, porque no se lo que sucederá al aplicar más parches)
 1
Author: MichiBack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-12 08:32:39