git reset – hard to commit no funciona – Tip es HEAD está detrás

Quiero restablecer mi twig local al commit as288sa . La confirmación se almacena en el repository remoto y mi repository local. Quiero reiniciar usando la bandera --hard .

 git reset --hard as288sa 

Verificando files HEAD está ahora en as288sa

Luego quiero add y commit el reset y push esa confirmación al repository remoto.

 git add -A git commit -m "reseted hard" 

En la twig myBranch nada para comprometer, trabajando tree limpio

 git push origin myBranch 

error rechazado: no se pudieron enviar algunos refs a git @ … Se rechazaron las actualizaciones porque la punta de su twig actual está detrás de su contraparte. Integre los cambios remotos (por ejemplo, git pull) antes de empujar los cambios

Así que hice un git pull , luego git add -A y un git commit tan bien como un git push e intenté entonces el git reset --hard as288sa . Recibo el mismo post de error nuevamente.

¿Que esta pasando?

Usted no "agrega y comete un reinicio"; add y commit es la forma de aplicar los cambios de tree de trabajo para crear un nuevo compromiso, mientras que el restablecimiento solo mueve una reference para apuntar a un compromiso existente. Esperaría que los commands de add y commit quejen de nada para agregar / vaciar la confirmación, a less que haya cambios no relacionados en su tree de trabajo.

Bueno, de todos modos, entonces tratas de empujar, pero como ves, a git no le gusta porque tratas de enviar una reference a un antepasado y Git no cree que sea una buena idea. Te dice que hagas un pull, pero cuando lo haces deshace tu restablecimiento moviendo tu ref local para myBranch de vuelta a donde el origen lo había puesto antes.

Así que eso es lo que sucedió … pero antes de que te diga cómo puedes solucionarlo, debo mencionar que lo que estás haciendo hará que cualquier otra persona que haga funcionar mi Bramido tenga un problema, y ​​si hay muchos usuarios esto probablemente no sea así. que quieres hacer.

Para hacer lo que pediste , después del reinicio pero sin hacer un pull (y ni siquiera te preocupes por agregar o confirmar) puedes hacer un push con el indicador -f. Puede o no tener permiso para hacer esto, pero incluso si lo hace, en serio, es probable que no sea lo que quiere hacer.

En cambio, lo que sospecho que realmente debería hacer es revertir la confirmación, es decir, crear una nueva confirmación que invierta los cambios de las confirmaciones anteriores devolviendo el tree al mismo estado que una confirmación anterior, pero de una manera que preserve el historial publicado. Mira los documentos para git revert