Git, ¿Cómo restablecer origin/master a un commit?


Restablezco mi maestro local a un commit mediante este comando:

git reset --hard e3f1e37

Cuando entro el comando $ git status, terminal dice:

# On branch master
# Your branch is behind 'origin/master' by 7 commits, and can be fast-forwarded.

#   (use "git pull" to update your local branch)
#
nothing to commit, working directory clean

Dado que también quiero restablecer origin / header, paso a origin / master:

$ git checkout origin/master
Note: checking out 'origin/master'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 2aef1de... master problem fixed for master. its okay now.

Y restablece el encabezado con este comando:

$ git reset --hard e3f1e37
HEAD is now at e3f1e37 development version code incremented for new build.

Luego intenté agregar commit a origin/header que no tuve éxito.

$ git commit -m "Reverting to the state of the project at e3f1e37"
# HEAD detached from origin/master
nothing to commit, working directory clean

Finalmente, paso a mi maestro local.

$ git checkout master
Switched to branch 'master'
Your branch is behind 'origin/master' by 7 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Desde entonces, restablezco el jefe de origen / maestro espero local y origin debería estar en la misma dirección pero como ves, git está diciendo que mi local / master está detrás de origin / master por 7 commits.

¿Cómo puedo solucionar este problema? Las cosas que estoy buscando son Head of local / master y origin/master apuntan al mismo commit. La siguiente imagen muestra lo que hice. Gracias.

introduzca la descripción de la imagen aquí

Author: Hesam, 2013-07-16

3 answers

origin/xxx las ramas son siempre un puntero a un control remoto. No puede comprobarlos, ya que no son un puntero a su repositorio local (solo obtiene la confirmación. Es por eso que no verá el nombre escrito en el marcador de rama de la interfaz de línea de comandos, solo el hash de confirmación).

Lo que necesita hacer para actualizar el control remoto es forzar el envío de sus cambios locales a master:

git checkout master
git reset --hard e3f1e37
git push --force origin master
# Then to prove it (it won't print any diff)
git diff master..origin/master
 424
Author: Simon Boudrias,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-16 02:30:37

La solución encontrada aquí nos ayudó a actualizar master a un commit anterior que ya había sido empujado:

git checkout master
git reset --hard e3f1e37
git push --force origin e3f1e37:master

La diferencia clave con la respuesta aceptada es el hash de confirmación "e3f1e37:" antes de master en el comando push.

 36
Author: jkovacs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-19 18:44:43

Ya que tenía una situación similar, pensé en compartir mi situación y cómo estas respuestas me ayudaron (gracias a todos).

Así que decidí trabajar localmente modificando mi último commit cada vez que quería guardar mi progreso en la rama principal (lo sé, debería haber ramificado, comprometido en eso, seguir empujando y luego fusionar de nuevo a master).

Una noche, con el miedo paranoico de perder mi progreso a un fallo de hardware o algo fuera del éter, decidí empujar a master a origen. Más tarde seguí modificando mi rama master local y cuando decidí que era hora de empujar de nuevo, me enfrenté a diferentes ramas master y descubrí que no puedo modificar origin/upstream (duh!) como puedo ramas de desarrollo local.

Así que no hice checkout master localmente porque ya estaba tras un commit. El maestro no había cambiado. Ni siquiera tuve que reiniciar hard duro, mi commit actual estaba bien.

Simplemente forcé push a origin, sin siquiera especificar qué commit quería forzar al maestro ya que en este caso es cualquier CABEZA está en. Comprobado git diff master..origin/master por lo que no había ninguna diferencia y eso es todo. Todo arreglado. ¡Gracias! (Lo sé, soy un novato git, por favor perdone!).

Así que si ya estás bien con tu rama master localmente, solo:

git push --force origin master
git diff master..origin/master
 0
Author: brokenthorn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-23 15:26:58