Restablezco mi maestro local a una confirmación mediante este comando:
git reset --hard e3f1e37
cuando ingreso el $ git status
comando, la 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
Como también quiero restablecer el origen / encabezado, pago al origen / maestro:
$ 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 restablecer 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, pago con 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, reinicio el jefe de origen / maestro, espero que local y origen deben estar en la misma dirección, pero como ves, git dice que mi local / maestro está detrás de origen / maestro en 7 confirmaciones.
¿Cómo puedo solucionar este problema? Lo que estoy buscando es Jefe de punto local / maestro y origen / maestro para el mismo compromiso. La siguiente imagen muestra lo que hice. Gracias.
fuente
Respuestas:
origin/xxx
las ramas siempre apuntan a un control remoto. No puede verificarlos, ya que no apuntan a su repositorio local (solo verifica el commit. Es por eso que no verá el nombre escrito en el marcador de rama de la interfaz de línea de comando, solo el hash de commit).Lo que debe hacer para actualizar el control remoto es forzar el empuje de sus cambios locales para dominar:
fuente
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
La solución encontrada aquí nos ayudó a actualizar el maestro a una confirmación anterior que ya se había enviado:
La diferencia clave de la respuesta aceptada es el hash de confirmación "e3f1e37:" antes del maestro en el comando push.
fuente
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
you should pull first
:)git config receive.denynonfastforwards false
pero en realidad lo configuré manualmente en mi repositorio local de git/opt/git
que tengo creado para jugar con las ideas aquí. No estoy seguro de cómo o si puede hacer esto para bitbucket, github, etc. Y @intuitivepixel no tiene sentido, ya que revierte lo que estaba tratando de lograr con el restablecimiento completo.Suponiendo que su rama se llama
master
tanto aquí como remotamente, y que su control remoto se llamaorigin
, puede hacer lo siguiente:Sin embargo, debe evitar hacer esto si alguien más está trabajando con su repositorio remoto y ha retirado sus cambios. En ese caso, sería mejor revertir las confirmaciones que no desea y luego presionar de manera normal.
fuente
Como tuve una situación similar, pensé en compartir mi situación y cómo me ayudaron estas respuestas (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 haberme ramificado, haberme comprometido con eso, seguir presionando y luego volver a fusionarme con el master).
Una tarde en la noche, con miedo paranoico de perder mi progreso a una falla de hardware o algo fuera del éter, decidí empujar al maestro a su origen. Más tarde, seguí modificando mi rama maestra local y cuando decidí que era hora de presionar nuevamente, me enfrenté a diferentes ramas maestras y descubrí que no puedo modificar el origen / upstream ( ¡duh! ) Como puedo hacerlo con las ramas de desarrollo local.
Así que no compré el master localmente porque ya estaba después de un commit. El Maestro no ha cambiado. Ni siquiera tuve que reiniciar, duro, mi confirmación actual estaba bien.
Simplemente forcé el empuje al origen, sin siquiera especificar qué compromiso quería forzar en el maestro, ya que en este caso es lo que sea HEAD. Comprobado
git diff master..origin/master
para que no haya diferencias y eso es todo. Todo arreglado. ¡Gracias! (Lo sé, soy un novato git, ¡por favor perdona!).Entonces, si ya está bien con su rama maestra localmente, solo:
fuente