¿Cómo git rebase la primera confirmación?


129

Solía git initcrear un repositorio nuevo, luego hice tres confirmaciones. Ahora quiero volver a basarme para volver atrás y enmendar mi primer compromiso, pero si lo hago, ¡ git rebase -i HEAD~3se queja! Si intento lo mismo con, HEAD~2entonces funciona un poco, pero solo me permite reorganizar las dos últimas confirmaciones.

¿Cómo me refiero a la 'confirmación antes de que haya alguna confirmación' o retrocedo e inserto una confirmación vacía?


Respuestas:


217

La forma más fácil, con un git lo suficientemente reciente (esto ha estado disponible durante mucho tiempo, así que debería tener esto):

git rebase -i --root

La otra forma fácil, como señaló twalberg en un comentario , es usar git checkout --orphanpara configurar para hacer una nueva confirmación de root, sobre la que puede copiar las antiguas confirmaciones. (Esto es lo que rebase -i --roottermina haciendo internamente de todos modos).


Al usar git rebase -i --rootobtengo el error error: cannot 'fixup' without a previous commital intentar aplastar la segunda confirmación (solo quiero la primera)
— mikemaccana

¿Qué está editando exactamente en la hoja de instrucciones? Debería tener una lista de confirmaciones, con las más antiguas en la parte superior, y un comando pickpara cada una. Cambie el segundo pick a squasho fixup, escriba la hoja de instrucciones, salga de su editor y Git debería hacer el trabajo.
— torek
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.