Cambié a maestro después de desarrollar en una rama durante mucho tiempo. El registro muestra:
Su sucursal está detrás de 'origin / master' por 167 commits, y puede reenviarse rápidamente.
Lo intenté:
git checkout HEAD
No tiene efecto. Esto se debe a que he finalizado un commit intermedio en master.
¿Cómo hacer que el maestro se quede en la cabeza?
git checkout HEAD
nunca hace nadaHEAD
ya significa la confirmación de salida.Respuestas:
Haciendo:
buscará y fusionará la
origin/master
rama (puede decirgit pull
que el origen es el predeterminado).fuente
Tratar
git merge origin/master
. Si quiere estar seguro de que solo hace un avance rápido, puede decirgit merge --ff-only origin/master
.fuente
merge
comando para no tener que volver a autenticarme.--ff-only
Es extremadamente útil.origin/master
porción es necesaria o si tiene valores predeterminados sensiblemente, pero me pareció útil hacer un alias para el avance rápido, así que quería asegurarme de que se usa la rama ascendente en lugar de codificarla de forma rígida paraorigin/master
:ff = merge --ff-only @{u}
(@{u}
está ascendente) .En su situación,
git rebase
también haría el truco. Como no tiene cambios que el maestro no tenga, git solo avanzará rápidamente. Si está trabajando con un flujo de trabajo de rebase, eso podría ser más recomendable, ya que no terminaría con una confirmación de fusión si se equivoca.fuente
Debería hacer el trabajo.
Recibirá el mensaje "Su rama está detrás" cada vez que trabaje en una rama diferente a la maestra , alguien hace cambios a la maestra y usted obtiene git pull.
ahora se extrae la referencia de origen / maestro, pero su maestro no se fusiona con él
ahora el maestro está detrás del origen / maestro y puede reenviarse rápidamente
ahora tu maestro y origen / maestro están sincronizados
fuente
Si está parado en una rama diferente y desea verificar la versión más nueva de master, también puede hacerlo
git checkout -B master origin/master
fuente
Para cualquiera que quiera avanzar rápidamente no está en otra rama remota (incluida ella misma) sin verificar esa rama, puede hacer lo siguiente:
Esto básicamente adelanta rápidamente el índice de
other
aorigin/master
si no está en laother
rama. Puede avanzar rápidamente varias ramas de esta manera.Si trabaja en otra rama durante algún tiempo y desea actualizar las ramas obsoletas desde el control remoto a sus respectivos cabezales:
fuente
No se requieren complejidades, solo párate en tu sucursal y haz un git pull trabajo, funcionó para mí
O, como segundo intento, git pull origin master solo en caso de que no tengas suerte con el primer comando
fuente
Para cambiar la base de la rama del rastreador local actual que mueve los cambios locales sobre el último estado remoto:
De manera más general, para avanzar rápidamente y soltar los cambios locales ( restablecimiento completo ) *:
para avanzar rápidamente y mantener los cambios locales ( rebase ):
* - para deshacer el cambio causado por el reinicio forzado involuntario primero
git reflog
, que muestra el estado de la CABEZA en orden inverso, busque el hash al que apuntaba la CABEZA antes de la operación de reinicio (generalmente obvio) y reinicie la rama a ese hash.fuente
En su caso, para avanzar rápidamente, ejecute:
Esto utiliza la
--ff-only
opción degit merge
, ya que la pregunta específicamente pide "avance rápido".Aquí hay un extracto de
git-merge(1)
que muestra más opciones de avance rápido:Avanzo lo suficiente como para garantizar un alias:
Ahora puedo ejecutar esto para avanzar rápidamente:
fuente
Mueva el puntero de su rama a la CABEZA:
Su rama
master
ya existe, por lo que git no le permitirá sobrescribirla, a menos que use ...-f
(este argumento significa--force
)O puede usar rebase:
Hazlo bajo tu propio riesgo;)
fuente