partir - Git squash todos los commit en rama sin conflicto.
git stash (2)
Un flujo de trabajo de desarrollo común para nosotros es la verificación de la rama b
, asignar un montón a ella, y luego aplastar todos esos compromisos en uno (aún en b
).
Sin embargo, durante el proceso de rebase -i
para aplastar todas las confirmaciones, a menudo hay conflictos en varios pasos.
Básicamente, quiero modificar la rama en una confirmación que represente el estado del repositorio en el momento de la confirmación final en b
He hecho algunas búsquedas pero no he encontrado exactamente lo que estoy buscando. No quiero merge --squash
porque nos gustaría probar la rama de la característica aplastada antes de fusionar.
Esto es similar a la respuesta de Rasmus, pero se divide en tres pasos que siempre deberían funcionar:
$ git merge feature1
$ git reset --soft HEAD@{1}
$ git commit -c feature1
Explicación:
- fusionar y resolver conflictos
- mantener los cambios en escena, pero restablecer a la cabeza de edad
- confirme todos los cambios utilizando el mensaje de confirmación y el autor del último compromiso de la rama de características
Si no necesita la información de confirmación, puede hacer un reinicio por software. Luego, los archivos permanecerán como estaban y cuando los confirme, este compromiso estará por encima del compromiso al que se restableció.
Para encontrar la confirmación de restablecer a:
git merge-base HEAD BRANCH_YOU_BRANCHED_FROM
Entonces
git reset --soft COMMIT_HASH
Luego vuelva a elaborar el compromiso, tal vez:
git commit -am ''This is the new re-created one commit''