Comencé a trabajar en algunos archivos que tenía en un submódulo de git en otro proyecto. Sin embargo, como era un submódulo de git, nunca se desprendió de "master" y, en cambio, solo se revisó el encabezado y se colocaron todos los archivos de la carpeta en "no branch".
Ahora que hice algunos cambios por accidente en estos archivos, me di cuenta de que estaba trabajando en un "no rama", submódulo de mi proyecto.
¿Cómo puedo obtener esos archivos en una rama (como maestro) para poder rescatarlos?
git merge $COMMIT_SHA
Una vez estuve en la otra rama.El estado de "no rama" se llama una CABEZA separada. Se llama así porque la referencia HEAD no está adjunta a ninguna rama, sino que apunta directamente a un compromiso. Para adjuntar HEAD a una rama que apunta a la confirmación HEAD actual, use
git checkout -b branchname
.Puede actualizar de forma segura una rama existente para incluir las confirmaciones en HEAD con esta secuencia:
O, equivalentemente, usando la notación de reflog.
HEAD@{1}
Para evitar tener que realizar la rama temporal:Usar la rama temporal sería una buena idea si no fuera a hacer la fusión inmediatamente.
Si desea sobrescribir por la fuerza una rama existente para que apunte a la confirmación en HEAD, puede usar
git branch -f branchname && git checkout branchname
. Si el commit en HEAD no está basado en la punta actual de nombre de rama esto resultará en un cambio de no avance rápido a nombre de rama que normalmente quieres evitar (se ve como un historial de reescritura).fuente
Para añadir a respuestas anteriores:
Mientras aún estás en una HEAD separada, puedes agregar una etiqueta:
Esto agregará un etiqueta al commit, que lo hará visible en
gitk
y otras herramientas.fuente