Git rebase falla porque: Commit xxxx es una combinación, pero no se ha otorgado la opción -m

Tenía una twig de características:

feature 

con permite decir 10 commits

Hace algún time comencé a hacer experimentos sobre él, pero quería preservar la funcionalidad actual por las dudas, así que comencé una nueva twig:

 feature-experiment 

y luego hizo otros 10 commits

hoy decidí merge feature-experiment en feature y luego borré feature-experiment . Hubo algunos conflictos de fusión que resolví.

luego, mis 20 commits, que usaban el mismo nombre y terminaban en WIP (trabajo en progreso), eran muy feos, así que decidí

 git rebase -p -i HEAD~22 

Cambié pick to s para aplastarlos a todos en la confirmación más antigua para esta function, pero tuve algunos conflictos de fusión (los mismos que antes). Los resolví y luego

 git add -A && git commit git rebase --continue 

pero ahora me sale el siguiente error:

 error: Commit asd123qsd is a merge but no -m option was given. fatal: cherry-pick failed Could not pick asd123qsd 

Este es el último commit (el de fusión)

Lo intenté de nuevo, pero esta vez no cambié la pick este compromiso en particular a s , pero obtuve el mismo error.

¿Cómo puedo llevar a cabo esta terrible database?

Estaba pensando, como una posible solución, que podría modificar el último compromiso para agregar -m a él, pero ¿cómo hago eso y qué hago con este command -m? Hay más opciones

El problema es probable aquí:

git rebase -p -i HEAD~22

La opción -p se describe en la documentation de git como la versión corta de --preserve-merges :

-pag

–preserve-merges

Vuelva a crear las asignaciones de combinación en lugar de aplanar el historial reproduciendo las confirmaciones que presenta una confirmación de fusión. Las resoluciones de conflictos de combinación o las modificaciones manuales para fusionar confirmaciones no se conservan.

Esto utiliza la maquinaria interactiva internamente, pero combinarla con la opción interactiva de manera explícita generalmente no es una buena idea a less que sepa lo que está haciendo (consulte los ERRORES a continuación).

Como intenta aplastar las confirmaciones aquí, la preservación de las asignaciones de fusión casi nunca es lo que desea. Además, la advertencia sobre la combinación de la --preserve-merges con la bandera --interactive ( -i ) probablemente sea relevante aquí.

Honestamente, usar una rebase para hacer una calabaza como esta puede introducir mucha más complejidad de la que necesitas aquí . Si todo lo que quiere es aplastar todos los cambios de esta twig en una única confirmación, puede hacerlo así:

 git checkout feature git reset --soft <base of feature branch> 

En este punto, todos los cambios de la twig de características se deben organizar y la twig de características debe estar en la confirmación base. Ahora puedes simplemente ejecutar git commit para crear una nueva confirmación que contenga todos los cambios de tu twig de características, que es básicamente equivalente a squash.