Todo este git reset, hard, soft, y todo lo demás mencionado aquí probablemente esté funcionando (no lo hizo para mí) si sigues los pasos correctamente y algún tipo de genio.
Si eres el Joe Smo promedio, prueba esto:
¿Cómo usar git merge --squash?
Me salvó la vida, y será mi lugar para el squash, he estado usando esto 4 veces desde que me enteré. Simple, limpio y básicamente 1 comando. En resumen:
si está en una sucursal, llamémosla "my_new_feature" fuera del desarrollo y su solicitud de extracción tiene 35 confirmaciones (o la cantidad que sea) y desea que sea 1.
A. Asegúrese de que su sucursal esté actualizada, continúe desarrollar, obtener lo último y fusionar y resolver cualquier conflicto con "my_new_feature"
(este paso realmente debería tomarlo tan pronto como sea posible de todos modos)
B. Obtener lo último de desarrollo y ramificarse a una nueva sucursal llámelo "my_new_feature_squashed"
C. la magia está aquí.
Desea llevar su trabajo de "my_new_feature" a "my_new_feature_squashed"
Así que solo haga (mientras que en su nueva sucursal creamos fuera del desarrollo):
git merge --squash my_new_feature
Todos sus cambios ahora estarán en su nueva rama, siéntase libre de probarlo, luego solo haga su única confirmación, empuje, nuevo PR de esa rama y espere a que se repita al día siguiente.
¿No te encanta la codificación? :)
git rebase -i 58333012713fc168bd70ad00d191b3bdc601fa2d
que hará un rebase interactivo donde el número de confirmación es la última confirmación que permanece sin cambios