Hoy os traigo una solución a cuando estamos trabajando con Git flow, o simplemente con git, y no nos damos cuenta que los cambios lo estamos realizando en la rama master en lugar de la rama donde tendríamos que estar. O simplemente la hemos liado parda en la rama master y queremos dejarlo todo como estaba al principio de meter la pata.
Así que sin más dilación voy a contaros cómo forzar un git pull para dejar nuestra rama master a como estaba antes de tocar el código, al final añado como conservar lo que hay en master en otra rama, para así no perder nada de lo realizado y pasarlo a la rama que toca.
Primero de todo usaremos el siguiente comando git:
1 | git fetch --all |
Con este comando, nos bajaremos lo último que haya, de todas las ramas, pero sin que nos haga hacer merge ni hacer un rebase de nada.
En caso de que no queramos obtenerlo todo, también podríamos ejecutar esto:
1 | git fetch origin master |
Así solo obtendríamos lo que hay en la rama origin/master y no obtenerlo todo, que a veces depende que proyecto… puede ralentizar la cosa.
Y ahora simplemente tenemos que hacer lo siguiente:
1 | git reset --hard origin/master |
O en el caso de que queramos hacer lo propio con una rama ejecutaremos lo siguiente:
1 | git reset --hard origin/nombre_de_la_rama |
Así con el git reset, lo que hacemos es resetear la rama master a lo que hemos cogido antes con el git –fetch all. La opción de –hard, nos cambia todos los archivos que tenemos por los archivos de origin/master y así nuestro repositorio se quedará como estaba antes de hacer lo que hubiéramos hecho.
También podríamos guardar los cambios realizados en una nueva rama, antes de forzar el pull, por si no estamos seguros de si queremos perder nuestros datos, o simplemente nos hemos equivocado de rama a la hora de aplicar cambios.
1 2 3 4 5 | git checkout rama-nueva-donde-guardar-los-cambios git fetch origin master git reset --hard origin/master |
Como veis aquí guardamos primero en una rama, todos los cambios realizados en master y de esta forma podemos resetear la rama master, forzar el pull, y así tener en una rama los cambios realizados, y el master como el de origin/master.
Espero que os haya servido y tengáis bien organizadas vuestras ramas, recordad que git es muy potente, pero que al ser tan potente hay que ir con mucho cuidado.
Y recordad de comentar siempre, en vuestro código y en el blog 😉