Volviendo a la confirmación anterior en SourceTree

Soy nuevo en Git, y estaba tratando de volver a una confirmación previa en SourceTree. Hice clic derecho en la confirmación a la que iba a volver y luego hice clic en pagar. Me dio una order diciendo que mi copy de trabajo se convertiría en una cabeza separada. ¿Qué significa esto y es algo que debería evitar?

Como artículo de Per Git-Tower: ¿Qué es una "HEAD separada" en Git?

Comprender cómo funciona el "pago y envío"

Con el command "git checkout", usted determina en qué revisión de su proyecto desea trabajar. Git luego coloca todos los files de esa revisión en su carpeta de copy de trabajo.

Normalmente, utiliza un nombre de twig para comunicarse con "git checkout"

$ git checkout development 

Sin embargo, también puede proporcionar el hash SHA1 de una confirmación específica:

 $ git checkout 56a4e5c08 Note: checking out '56a4e5c08'. You are in 'detached HEAD' state... 

Este estado exacto – cuando se desprotege una confirmación específica en lugar de una sucursal – es lo que se llama HEAD separado .

enter image description here

El problema con un HEAD separado

El puntero HEAD en Git determina su revisión de trabajo actual (y por lo tanto los files que se colocan en el directory de trabajo de su proyecto). Normalmente, cuando se busca un nombre de twig adecuado, Git mueve automáticamente el puntero HEAD cuando creas una nueva confirmación. Estás automáticamente en la última confirmación de la twig elegida.

Cuando en cambio eliges revisar un hash de confirmación, Git no hará esto por ti. La consecuencia es que cuando haces cambios y los comprometes, estos cambios NO pertenecen a ninguna twig. Esto significa que pueden perderse fácilmente una vez que revisa una revisión o twig diferente: al no estar registrado en el context de una sucursal, le falta la posibilidad de acceder a ese estado fácilmente (a less que tenga una memory shiny y pueda recordar el hash de confirmación de ese nuevo compromiso …).

Resumen: de SourceTree, Kindly Checkout a una sucursal en particular en lugar de verificar a Compmit particular.

El problema no parece estar relacionado exactamente con git, sino que es específico del cliente / proveedor git que está utilizando (bitbucket, sospecho).

Le sugiero que use el cliente de línea de command, en lugar de la interfaz de usuario web para aprender git better.

En el estado de cabecera separada, cualquier cambio que realice (y confirmar) se separa del tree de commits, y necesita trabajo adicional para volver a poner esa confirmación en el tree de commits. Normalmente no realizamos cambios en el estado del cabezal separado, sino que se utiliza para reorderar el tree de confirmación. Pero vale la pena experimentar en un estado separado.