Pregunta ¿Cómo reinicio 'maestro' a 'origen / maestro'?


¿Puedo hacer lo siguiente de una manera más simple?

git checkout origin/master
git branch -D master
git branch master
git checkout master

151


origen


A veces, esto se puede hacer sin tocar el árbol de trabajo: stackoverflow.com/a/12343727/586086 - Andrew Mao
Actualice su respuesta aceptada: la respuesta de @KindDragon es correcta y más corta. - Robert Siemer


Respuestas:


Como KindDragones responder menciona, puedes recrear master directamente en origin/master con:

git checkout -B master origin/master

los git checkout página man  menciona:

Si -B es dado, <new_branch> se crea si no existe; de lo contrario, se restablece. Este es el equivalente transaccional de

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

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.


209



Puedes hacer eso con una línea. - Robert Siemer


Git admite este comando:

git checkout -B master origin/master

Revisar la origin/master rama y luego restablecer master rama allí.


69



La única respuesta verdadera. - Robert Siemer
guarde cuatro teclas: no necesita las comillas. Justo: git checkout -B master / master maestro - zumalifeguard
digamos que cometí 2 cosas, la primera es una combinación con una rama y la segunda es regular. ¿Qué sucede con la fusión si vuelvo al origen / maestro? - utdev
no tienes que git fetch origin master antes de estar seguro origin/master esta actualizado? - pedrozath
Sí, por supuesto con todas las soluciones que debes hacer git fetch primero - KindDragon


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

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

git registra automáticamente todos los valores de una ref (a través del reflog). Entonces, después de ejecutar ese comando, entonces master@{1} se refiere al valor anterior de maestro.

La respuesta de VonC es correcta, pero se pierde tiempo extrayendo el antiguo valor del maestro en el sistema de archivos.

Si te importan los objetos huérfanos en el repositorio, entonces puedes ejecutar git gc


28



Suena una alternativa interesante. +1 - VonC
Todavía me da Already on 'master' - yourfriendzak
@yourfriendzak, me olvidé de tener en cuenta que es posible que ya hayas revisado el maestro antes de actualizar el maestro. He actualizado la respuesta para que sea una que funcione 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 verificar el maestro sin tener que voltear archivos viejos a través del repositorio. ¡Estupendo! - Andrew Mao


Si ya estás en master puedes hacer lo siguiente:

git reset --hard origin/master

Señalará el local master ramificarse al control remoto origin/master y descartar cualquier modificación en el directorio de trabajo.


11



Y eliminará los archivos! Si ha creado / editado archivos y ha ejecutado un "git add" en ellos, este comando los eliminará. Ten cuidado. - Cheeso


Ya eres el maestro. Desea eliminar el origen remoto para git pull no hace nada Asi que

git remote rm origin

A continuación, puede agregar el repositorio actual como origen al repositorio remoto si así lo desea.

NB: ¡Si el local se adelanta al control remoto, su solución eliminará los cambios locales!


-1



Esta respuesta no tiene sentido. - ADTC
Esto es directamente engañoso y podría dañar el proyecto en el que la gente está trabajando. - Wisienkas
Esto no está bien. No estoy seguro de por qué tuviste un voto positivo. - Saher Ahwal