tipos tag sirve remove qué para oneline nos log hace existen etiquetas cuando crear creamos git branch tags commit

tag - Git se compromete contra la etiqueta sin rama



¿qué hace git log-oneline? (4)

Sí, estarán en reflogs.

Puede nombrar la rama en cualquier momento como este:

git checkout -b my-branch-name

Si reviso una versión etiquetada de mi código fuente sin crear una rama, Git indica que no estoy asociado con ninguna rama. Sin embargo, me complace permitirme hacer cambios y registrarlos. ¿A dónde van esos cambios? Si cambio a ''master'' desaparecen (sobrescritos por lo que estaba en el master) y parece que no puedo volver a encontrarlos. ¿Lo que da? Si Git me permite realizar cambios contra lo que es esencialmente una rama anónima, ¿puedo recuperarlos?


Para responder a la segunda pregunta, usarías git reset --hard yourtagname

En cuanto a lo que sucedería, básicamente bifurcaste tu rama en el nombre de etiqueta y permaneciste en la misma rama. Tus compromisos en el tenedor viejo siguen ahí ... son difíciles de ver. Puede que tenga que usar el reflog para encontrar el tenedor viejo.


Debido a que su confirmación no se encuentra en ninguna rama , no puede verla en el directorio de trabajo a menos que realice el pago de esa confirmación específica, utilizando su SHA1. Puede encontrar el compromiso mirando el reflog que rastrea los cambios en lo que ha desprotegido del repositorio. Si tu etiqueta fue XXX , verás algo como:

$ git reflog 7a30fd7... HEAD@{0}: checkout: moving from master to XXX ddf751d... HEAD@{1}: checkout: moving from 96c3b0300ccf16b64efc260c21c85ba9030f2e3a to master 96c3b03... HEAD@{2}: commit: example commit on tag XXX, not on any branch 7a30fd7... HEAD@{3}: checkout: moving from master to XXX

Eso le indica al SHA1 que tendría que checkout para ver su confirmación en el directorio de trabajo.

$ git checkout 96c3b03 Note: moving to "96c3b03" which isn''t a local branch If you want to create a new branch from this checkout, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new_branch_name> HEAD is now at 96c3b03... example commit on tag XXX, not on any branch $ git checkout -b newbranch $ git branch #lists all branches feature1 master * newbranch

Todo esto me pareció un poco extraño al principio, hasta que me di cuenta de que git checkout coloca todos los archivos del proyecto a partir de un compromiso particular en mi sistema de archivos (directorio de trabajo). En efecto, el directorio de trabajo actúa como un navegador en el repositorio local de Git. Por lo tanto, sus cambios no se han sobrescrito en el repositorio , simplemente no se muestran en su directorio de trabajo cuando se ha revisado el maestro.


Alternativamente, puede fusionar la confirmación de nuevo en el maestro sin una nueva rama encontrando su SHA1 (usando git reflog como se indicó anteriormente) y luego:

git checkout master git merge SHA1