Usuario del software
2011-04-20 10:34:06 +0000 2011-04-20 10:34:06 +0000

Respuestas [4]

343
2011-04-20 11:22:10 +0000

Como KindDragon 's respuesta menciona, puedes recrear master directamente en origin/master con:

git checkout -B master origin/master

La git checkout man page menciona:

Si se da -B, <new_branch> se crea si no existe; si no, se reinicia. Este es el equivalente transaccional de

$ git branch -f  []
$ git checkout 

Desde Git 2. 23+ (Agosto 2019), ya que git checkout es demasiado confuso , el nuevo comando (aún experimental) es * git switch **:

git switch -C master origin/master

Es decir:

-C 
--force-create 

Similar a --create, excepto que si <new-branch> ya existe, será reseteado a <start-point>.
Este es un atajo conveniente para:

$ git branch -f 
$ git switch 

Originalmente sugerido:

Algo como:

$ git checkout master

# remember where the master was referencing to
$ git branch previous_master

# Reset master back to origin/master
$ git reset --hard origin/master

con el paso 2 siendo opcional.

343
102
2014-08-24 19:30:10 +0000

Git soporta este comando:

git checkout -B master origin/master

Revisa la rama origin/master y luego reinicia la rama master allí.

102
30
2013-01-23 20:48:07 +0000

Creo que incluso la respuesta de VonC tiene complejidad comparada con esta opción:

git update-ref refs/heads/master origin/master
git reset --hard master

git registra automáticamente cada valor de un reflog (a través del reflog). Así que después de ejecutar ese comando, entonces master@{1} se refiere al valor anterior del maestro.

La respuesta de VonC es correcta, pero pierde tiempo en comprobar el valor anterior del maestro en el sistema de archivos.

Si te preocupan los objetos huérfanos en el repo, entonces puedes ejecutar git gc

30
22
2014-06-25 15:47:13 +0000

Si ya está en master puede hacer lo siguiente:

git reset --hard origin/master

Apuntará la rama local de master al remoto origin/master y descartará cualquier modificación en el directorio de trabajo.

22