Ahora como estoy haciendo confirmaciones de mi proyecto que muestra el SHA-1 en la línea de comandos como la rama de trabajo (en lugar de maestro)
Esto probablemente significa que tiene una “cabeza separada”. Un HEAD separado apunta directamente a una confirmación en lugar de señalar a una rama (que luego apunta a una confirmación). Una cabeza separada es como una rama sin nombre.
Este estado fue causado por el comando git checkout HEAD^
ya que HEAD^
hace referencia a una confirmación, no a un nombre de rama. Probablemente quería hacer git reset --hard HEAD^
- mientras principal seguía siendo la rama activa: para dejar caer la más reciente de confirmación desde maestro (que seguiría existiendo en el disco y sea accesible a través de la reflog hasta su entrada en el reflog expirado) .
¿Cómo puedo señalar HEAD al último compromiso del que estoy trabajando?
HEAD
es siempre la confirmación de la que está trabajando, ya sea que esté separada o no.
Si se refiere a “¿Cómo he de decirle maestro a la última cometer estoy trabajando desde?”, Entonces eso es lo mismo que preguntar “¿Cómo puedo obtener maestro para que apunte a HEAD
?”.La respuesta es
git branch -f master HEAD
(en realidad, puede dejar fuera HEAD
, ya que es el valor por defecto). Esto restablece forzosamente maestro a la confirmación actualmente en HEAD
. Ningún commit en maestro que no son accesibles a través de otra rama o la corriente HEAD
serán a partir de ahora sólo será accesible a través de la reflog y eventualmente serán basura recogida (esto arroja lejos, de maestro, nada en maestro que no está en HEAD
). También es probable que desee volver a conectar su HEAD
a este maestro actualizado después de esto.
git checkout master
En lugar de los dos comandos anteriores, se puede volver a conectar HEAD
en primer lugar, a continuación, restablezca maestro con estos dos comandos consecutivos:
git checkout master # reattach, commit at HEAD is now the unwanted commit
git reset --hard [email protected]{1} # reset master to the commit at HEAD before the prior command
La notación [email protected]{1}
se utiliza para acceder a las entradas en el reflog. Este ejemplo solo significa "el HEAD
anterior" (es decir, "el compromiso en HEAD
antes de la operación más reciente que afectó HEAD
").
Gracias por entrar en profundidad. –