tag practices delete crear commits commands best git merge git-rerere

practices - git tag commits



¿Hay algún inconveniente para habilitar git rerere? (4)

Como menciona JC Hamano en su artículo " Fun with rerere "

  • Rerere recuerda cómo eligió resolver las regiones en conflicto;
  • Rerere también recuerda cómo retocaste fuera de las regiones en conflicto para adaptarte a los cambios semánticos;
  • Rerere puede reutilizar la resolución anterior a pesar de que estaba fusionando dos ramas con contenidos diferentes a los que resolvió anteriormente .

Incluso las personas que han estado usando rerere por un largo tiempo a menudo no se dan cuenta del último punto.

Por lo tanto, si activa la rerere en un contenido demasiado amplio, puede terminar con una resolución de fusión sorprendente o confusa debido al último punto.

He leído varias cosas sobre la función nueva de git, y estoy considerando habilitarlo. Pero no he visto a nadie mencionar posibles problemas que puedan surgir al usarlo. Tengo que asumir que hay una desventaja, o que probablemente esté habilitada por defecto. Entonces, ¿hay alguna desventaja para habilitar el rerere? ¿Qué problemas potenciales puede causar que de otro modo no ocurrirían?


Escogí una confirmación (en gitk) que solo contenía un archivo binario. Cherrypick falló debido a un conflicto (lo que de por sí es natural) y resolví el conflicto manteniendo la elección perfecta. Más tarde me sorprendí al encontrar en otra sucursal reajustada que mis dlls no se comportaban, solo para descubrir que no fueron llevados a la base de datos como (especulo) la resolución automática de conflictos. Así que este es el único caso que encontré (tener habilitado nuevamente) de ejecutar en contra intuitivo (aunque estoy seguro de que es perfectamente consistente) el comportamiento.


Si realiza una combinación incorrecta, luego deséchela, luego realice la "misma" fusión de nuevo, será incorrecta nuevamente. Sin embargo, puedes olvidar una resolución grabada. De la documentación :

git rerere forget <pathspec>

Esto restablece las resoluciones de conflicto que ha sido registrada para el conflicto actual en <pathspec> .

Tenga cuidado de usarlo en rutas específicas; no desea deshacerse de todas sus resoluciones grabadas en todas partes. ( forget sin argumentos se ha deprecated para evitar que lo haga, a menos que escriba git rerere forget . para solicitarlo explícitamente).

Pero si no piensas hacer eso, fácilmente podrías terminar poniendo esa fusión incorrecta en tu historial.


Tengo una actualización global habilitada. Realmente no he notado ningún problema, y ​​por lo general parece que me hace la vida más fácil.