¿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.