Esta es la situación. Estoy trabajando en la rama master
. Creo file1 y commit. Creo file2 y commit. Whoops. Es posible que desee utilizar el archivo2, algún día, pero definitivamente no es algo que deba incluirse en la rama principal. Para no perder el archivo2 utilizogit: ¿Cómo sobrescribo todos los cambios locales en la fusión?
git checkout head~1
git branch new-branch
git checkout new-branch
para poder seguir desarrollando. Agrego el archivo3 al new-branch
. Si usted ha estado prestando atención, Tengo dos ramas, master
que contiene "archivo1" y "archivo2" y new-branch
que contiene "archivo1" y "archivo3".
Ahora es el momento de obtener los cambios que he hecho de nuevo en la rama principal. ¿Cuál es la mejor manera de hacer esto? Definitivamente quiero la cabeza de la rama master
a señalar en los archivos que aparecen en new-branch
, pero también no quiero perder el trabajo que he hecho en fichero2 al hacer un reset, en caso de que quiera usarlo.
Tenga en cuenta que esto es una simplificación. En lugar de solo tres archivos, tengo una docena de archivos con decenas de líneas de código que se cambian por todas partes con múltiples confirmaciones. Ciertamente espero que la solución no sea hacer una fusión/extracción de archivo por archivo, porque eso sería un gran dolor.
¿Alguna idea?
Dijiste "Esto parece justo lo que necesito", pero ¿trataste de cambiar de rama como indiqué en mi respuesta? – VonC
Lo hice. La respuesta de Randal fue aún más cercana a mi solución. Resulta que la clave es 'git reset --hard HEAD ~ 1'. No me di cuenta de que podías restablecer una cadena de confirmaciones con un comando. Todo lo que necesito hacer es ramificarme de la rama maestra actual, luego reiniciar de nuevo a donde comencé a equivocarme. – kubi