Como se comentó Jefromi,
git checkout master
git reset --hard origin/master
hace lo correcto: establecer el maestro a su estado de origen. (Si ya se encuentra en la rama master
, puede omitir el primer comando). También deja intacto el reflog de la rama.
vieja respuesta inferior:
git checkout dev
git branch -D master
git checkout master
Esto cambia a la otra rama ("dev" en este caso - elegir cualquier otra rama que pueda tener), elimina el master
rama local, y luego lo recrea desde remotes/origin/master
(que podría no funcionar según su configuración y la versión de Git). El último comando es equivalente a menudo
git checkout -b master remotes/origin/master
En comparación con la nueva respuesta por encima de esto tiene el inconveniente de que el reflog se destruye y vuelve a crear (es decir, puede no tan fácil de deshacer esto si es necesario), y es menos clara Qué pasa aquí. Además, debe tener otra rama a la que pueda cambiar durante la eliminación y la recreación (pero ese fue el caso en la pregunta original).
¿Por qué no simplemente 'git reset --hard origin/master'? Además ... ¿ese último paso incluso funciona? No me parece. ('git checkout -b master origin/master' sin embargo.) – Cascabel
@Jefromi: Tienes razón, no vi la solución obvia. El último parece funcionar para mí (el pago tiene un valor predeterminado si la rama no existe, pero sí una conexión remota). Esto puede depender de la versión, sin embargo. –
Probé la primera solución y no funcionó. Sería bueno editarlo. – lulalala