He leído varias cosas sobre la función rerere de git y estoy considerando habilitarla. Pero no he visto a nadie mencionar los posibles problemas que podrían surgir al usarlo. Debo asumir que hay una desventaja, o probablemente estaría habilitado de forma predeterminada. Entonces, ¿hay alguna desventaja en habilitar la rerere? ¿Qué problemas potenciales puede causar que no ocurrirían de otra manera?
git
merge
git-rerere
Ryan C. Thompson
fuente
fuente
Resolved 'index.html' using previous resolution.
Respuestas:
Si realiza una combinación de forma incorrecta, deséchela y vuelva a realizar la combinación "misma", volverá a ser incorrecta. Sin embargo, puede olvidar una resolución grabada. De la documentación :
Tenga cuidado de usarlo en rutas específicas; no querrás arruinar todas tus resoluciones grabadas en todas partes. (
forget
sin argumentos se ha desaprobado para evitar que haga esto, a menos que escribagit rerere forget .
para solicitarlo explícitamente).Pero si no piensa en hacer eso, podría terminar fácilmente poniendo esa combinación incorrecta en su historial ...
fuente
rerere
aún deja los archivos con conflictos marcados como no fusionados, por lo que debe agregarlos manualmente (con suerte después de inspeccionarlos / probarlos) antes de confirmar. Siempre puede usargit checkout -m <path>
para verificar la versión original en conflicto y rehacer la resolución si es necesario.Como menciona JC Hamano en su artículo " Diversión con rerere "
Por lo tanto, si activa
rerere
un contenido demasiado amplio, puede terminar con una resolución de fusión sorprendente o confusa debido al último punto.fuente
Tengo rerere habilitado globalmente. Realmente no he notado ningún problema y, por lo general, parece facilitarme la vida.
fuente
Elegí una confirmación (en gitk) que solo contenía un archivo binario. Cherrypick falló debido a un conflicto (lo que es natural) y resolví el conflicto manteniendo la selección. Más tarde, me sorprendió encontrar en otra rama rebasada que mis dlls no se comportaban, solo para descubrir que no se llevaron a la rebase como (especulo) resolución automática de conflictos. Así que este es el único caso que encontré (habiendo vuelto a habilitar) de encontrar un comportamiento contradictorio (aunque estoy seguro de que es perfectamente consistente).
fuente
git rerere forget path/to/compiled/bin.dll