2011-05-28 14 views
8

Actualmente estoy trabajando en una rama de características que pronto se fusionará nuevamente en el maestro. Hace poco intenté eso y tuve algunos conflictos de fusión, que tuve que corregir de forma manual.Usar siempre la versión de una rama fusionada en conflictos

Entonces, ¿es posible decirle a git que siempre use la versión de la rama fusionada para evitar conflictos de fusión de antemano? En este caso, arreglé los conflictos manualmente, pero siempre elegí la versión de la rama fusionada, por lo que esto me ahorraría un trabajo tedioso.

Respuesta

15

Puede hacer exactamente esto en git con el comando siguiente, suponiendo que feature es el nombre de la rama de la característica:

git merge -s recursive -X theirs feature 

Esto dice a utilizar el "recursivo" combinar estrategia, pero con el "de ellos " opción. Esto significa que cuando hay un conflicto, se resolverá automáticamente tomando la versión del trozo de la rama de características, no su rama actual. (Tenga en cuenta que esto es completamente diferente de la estrategia de fusión "suya", que ahora se ha eliminado de git).

Esta característica se introdujo en git v1.7.0.

+0

¿Estás seguro? ¿La estrategia no hizo que todos los archivos vinieran desde un lado, no solo los que entraron en conflicto? –

+0

Sí, eso es lo que hizo la antigua estrategia de fusión 'theirs', pero la opción' theirs' de 'recursive' hace algo diferente: realiza una fusión normal pero resuelve automáticamente cualquier conflicto en favor de" su "versión. –

+0

¡es bueno saberlo! Aunque parece un poco peligroso. ¿Qué pasa con el archivo en conflicto en sí? ¿Los recursivos recurrirían a los cambios que no entraron en conflicto? ¿O tomaría todo el archivo? –

0

No puede usar la estrategia recursiva "nuestra". Omitiría sus cambios que no entraron en conflicto.

Podría hacer un script para obtener los nombres de archivo de los archivos en conflicto, y hacer un git checkout --ues - filename seguido de un nombre de archivo de git add.

Si tiene los mismos conflictos una y otra vez, active la repetición y eso puede ser suficiente para que no tenga que resolver los conflictos.

Espero que esto ayude.

+0

Es cierto, ** 'git rerere' ** es una herramienta maravillosa pero no muy visible ... –

Cuestiones relacionadas