¿Cómo evito que un confluencia de combinación de git deje de "comer" cambios?

He estropeado otra fusión. Tenía dos líneas aplastadas juntas y perdí un cambio menor en la segunda línea cuando tomé mis cambios en la línea anterior.

Así que aquí está el conflicto:

hur

Y aquí es donde lo arruiné: dur

¿Ver la diferencia? Awaiting Fulfillment debe ser minúscula.

Eso es malo, pero ese no es mi problema / pregunta.

El problema es que cuando fusiono esto, parece que Awaiting Fulfillment nunca fue cambiado. git blame muestra el compromiso antes de ese cambio, y no mi fusión combinada. La diferencia en la request de extracción tampoco muestra cambios en esa línea.

Esto nos ha sucedido algunas veces, y no estoy exactamente seguro de cómo atraparlo. ¿Cómo puedo hacer que estas malas fusiones sean claras y fáciles de encontrar?


Esto es lo que hice para arruinar esto (mi flujo de trabajo):

1) hago una twig, permissions

2) Trabajo en permissions

3) Cuando termino, git pull master

4) Después de solucionar los conflictos de fusión, presiono mi twig de permissions y voy a GitHub para poder emitir una request de extracción desde allí; ahora mi equipo mira lo que he roto mi nueva característica

5) Luego fusionamos la request de extracción

Esto crea los siguientes dos problemas:

Mirando el compromiso de fusión, no hay cambio en esa línea. La línea 658 está "intacta".

git blame no muestra el compromiso conflictivo que lo cambió tampoco. Es como si nunca hubiera cambiado.

Enterrado en la request de extracción, mi mala fusión se puede encontrar, pero no cuando simplemente estoy navegando por el historial del file.


Lo que he intentado:

No me git reset --hard volví al punto antes de git pull --rebase y git pull --rebase y git rebase master y git rebase permissions . Terminé con el git pull --rebase y terminé con el mismo problema (la git blame del git blame no está clara, y es difícil encontrar el git pull --rebase ). Las rebases se sintieron como una marcha de la muerte: demasiados cambios y finalmente me di por vencido.


Siento que me faltan algunos conceptos cruciales de git aquí, pero no estoy seguro de por dónde empezar a leer.

¿Cómo puedo hacer que estas malas fusiones sean claras y fáciles de encontrar?

En git a partir de 2.6.2 puede usar la blame --first-parent para encontrar un cambio que ya estaba en el maestro, pero fue revertido por una fusión. Pero para que funcione en tu caso (cuando el cambio ya se haya revertido en tu sucursal), debes culpar al jefe de tu sucursal