$ 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
git registra automáticamente cada valor de una referencia (a través del registro de referencias). Entonces, después de ejecutar ese comando, se master@{1}refiere al valor anterior de master.
La respuesta de VonC es correcta, pero desperdicia tiempo revisando el antiguo valor de master en el sistema de archivos.
Si le importan los objetos huérfanos en el repositorio, puede ejecutar git gc
@yourfriendzak, olvidé tener en cuenta que es posible que ya haya revisado el master antes de actualizar el master. He actualizado la respuesta para que sea una que debería funcionar incluso en ese caso también.
Alexander Bird
Esto funciona incluso si no está en el maestro (como un estado HEAD separado que en realidad apunta al origen / maestro de la punta). Luego, puede pagar el master sin tener que voltear archivos viejos a través del repositorio. ¡Excelente!
Andrew Mao
20
Si ya está conectado master, puede hacer lo siguiente:
git reset --hard origin/master
Apuntará la masterrama local al control remoto origin/mastery descartará cualquier modificación en el directorio de trabajo.
Respuestas:
Como KindDragon 's respuesta menciona, puede volver a crear
master
directamente enorigin/master
la:La
git checkout
página de manual menciona:Si
-B
se da,<new_branch>
se crea si no existe; de lo contrario, se restablece . Este es el equivalente transaccional deOriginalmente sugerido:
Algo como:
con el paso 2 siendo opcional.
fuente
Git admite este comando:
Echa un vistazo a la
origin/master
rama y luego reinicia lamaster
rama allí.fuente
git fetch origin master
antes para estar seguro de queorigin/master
está actualizado?git fetch
primeroCreo que incluso la respuesta de VonC tiene complejidad en comparación con esta opción:
git registra automáticamente cada valor de una referencia (a través del registro de referencias). Entonces, después de ejecutar ese comando, se
master@{1}
refiere al valor anterior de master.La respuesta de VonC es correcta, pero desperdicia tiempo revisando el antiguo valor de master en el sistema de archivos.
Si le importan los objetos huérfanos en el repositorio, puede ejecutar
git gc
fuente
Already on 'master'
Si ya está conectado
master
, puede hacer lo siguiente:git reset --hard origin/master
Apuntará la
master
rama local al control remotoorigin/master
y descartará cualquier modificación en el directorio de trabajo.fuente
git checkout -B master origin/master
?