Pregunta

Si me la salida marcada con una versión de mi código fuente, sin la creación de una rama, Git indica que no estoy asociado con cualquier rama en absoluto. Es me dejaron hacer cambios y comprueba a pesar. ¿A dónde van esos cambios? Si cambio de nuevo a 'maestro' que desaparecen (sobrescrito por lo que era en master) y me parece que no puede encontrar de nuevo. ¿Lo que da? Si Git me permite confirmar los cambios en contra de lo que es esencialmente una rama en el anonimato, sin duda puedo recuperarlos?

¿Fue útil?

Solución

Debido a que su cometen es no en cualquier rama , no se puede ver en el directorio de trabajo a menos que usted la comprobación de que se comprometan específica, utilizando su SHA1. Puede encontrar el commit mirando el reflog que rastrea los cambios en lo que se ha obtenido de la recompra. Si la etiqueta era XXX verá 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

Esto le indica el SHA1 que tendría que checkout con el fin de ver a su cometen 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 parecía un poco raro para mí al principio, hasta que me di cuenta de que git <=> coloca todos los archivos de proyecto como de un particular, se comprometen en mi sistema de archivos (directorio de trabajo). En efecto, el directorio de trabajo actúa como un navegador en el repositorio Git local. Así que los cambios no han sido sobrescritos en el repositorio , que están simplemente no se muestran en el directorio de trabajo cuando se haya comprobado el maestro.

Otros consejos

Sí, van a estar en reflogs.

Se puede nombrar a la rama en cualquier momento como este:

git checkout -b my-branch-name

Como alternativa, puede combinar el comprometerse de nuevo en maestro sin una nueva rama encontrando su SHA1 (usando git reflog que el anterior) y luego:

git checkout master
git merge SHA1

Para responder a la segunda pregunta que tendría que utilizar git restablecer yourtagname --hard

En cuanto a lo que sucedería en horquilla que esencialmente su sucursal en el nombre de etiqueta y se quedaron en la misma rama. Sus comete en el antiguo tenedor siguen ahí ... son sólo difíciles de ver. Puede que tenga que utilizar el reflog para encontrar el viejo tenedor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top