Git: ir y venir y ser fatal: ¿no estás actualmente en una sucursal?

Después de mover hacia atrás y hacia adelante para rastrear un error en mi repository, por ejemplo:

$ git reset --hard fcf9818 

Encontré el error, luego quise avanzar al último compromiso, por ejemplo:

 $ git checkout 32764bf 

Entonces, comencé a hacer cambios y quiero comprometerlo:

 $ git status HEAD detached at 32764bf Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) 

Pensé que ya soy el último compromiso.

Pero seguí adelante para cometerlo:

 $ git add -A $ git commit [detached HEAD ccf8009] Fixed gird bug on Safari - removing bootstrap grid css. Added code to centralise the image. 2 files changed, 6 insertions(+), 1 deletion(-) 

Ahora tengo este error:

 $ git push fatal: You are not currently on a branch. To push the history leading to the current (detached HEAD) state now, use git push origin HEAD:<name-of-remote-branch> 

¿Qué debo hacer correctamente entonces si quiero reenviar a la última confirmación después de retroceder?

¿Cómo puedo arreglar el error ahora?

EDITAR:

 $ git checkout 32764bf Warning: you are leaving 1 commit behind, not connected to any of your branches: 6015d59 Fixed gird bug on Safari - removing bootstrap grid css. Added code to centralise the image. If you want to keep it by creating a new branch, this may be a good time to do so with: git branch <new-branch-name> 6015d59 HEAD is now at 32764bf... Added template for finally - only image. 

Y sigo recibiendo HEAD detached at 32764b :

 $ git status HEAD detached at 32764bf nothing to commit, working tree clean 

Supongamos que hay un branch master y apunta a un commit 32764bf .

  1. git checkout master

Ahora estás en la twig maestro. Cuando realiza una nueva confirmación, el maestro de reference se mueve a la nueva confirmación. Lo mismo ocurre con la reference HEAD. Cuando ejecuta git reset --hard <commit> , tanto el maestro como HEAD se mueven a ese commit. git push implica git push origin master:master , equivalente a git push origin HEAD:master .

  1. git checkout 32764bf

Ahora estás en una CABEZA separada. Tómalo como una twig sin nombre, que es nuevo para dominar. Cuando realiza una nueva confirmación, HEAD se mueve a la nueva confirmación pero el maestro aún apunta a 32764bf. Cuando ejecutas git reset --hard <commit> . Solo HEAD se mueve hacia ese compromiso y el maestro se mantiene quieto. git push no puede implicar git push origin master:master porque ahora NO estás en el branch master. Digamos que ahora HEAD apunta a 8977abf. Puede ejecutar el git push origin HEAD:master o git push origin 8977abf:master para actualizar el master en el repository remoto, pero el maestro local no ha cambiado y aún apunta a 32764bf. Obviamente, estos dos empujes son diferentes del git push origin master:master de git push origin master:master o git push origin 32764bf:master porque ahora HEAD y el maestro apuntan a diferentes commits. Incluso si ahora HEAD y Master apuntan a la misma confirmación, estar en el HEAD separado y estar en el maestro de twig son dos estados diferentes.

Si marcó una revisión (no una sucursal) y se corrigió desde allí, entonces se encuentra en estado HEAD separado . Para enviar a una sucursal remota, puede crear una sucursal y enviarla al control remoto o (como dice en el post) presionar especificando en qué sucursal remota desea presionar: git push a-remote HEAD: remote-branch -nombre