Estoy confundido. Quiero volver a una anterior, se comprometen a que me he identificado en «git log».

Pero cuando hago «git checkout «, no me dijo cometer. Nada cambia.
Me dice que estoy en desprendimiento de la CABEZA, pero los archivos que desea no está allí.

Lo que el fep estoy haciendo mal?

MrB

InformationsquelleAutor MrBubbles | 2011-02-15

2 Comentarios

  1. 20

    git reset --hard <commit> De la página del manual:

    Coincide con el árbol de trabajo y el índice para que el árbol se cambia. Cualquier cambio en seguimiento de los archivos en el árbol de trabajo ya que se pierden.

    git checkout es para cambiar el directorio de trabajo a una rama diferente o cometer. Esto no mover el HEAD allí.

    • De nuevo, reset es para el restablecimiento de su índice y directorio de trabajo a un estado anterior. checkout es para la comprobación de una nueva o diferente de la rama. Una vez que te acostumbras no es tan confuso. =)
    • Echa un vistazo gitready.com y learn.github.com/p/intro.html para enfriar los tutoriales, y, a continuación, gitref.org para una referencia cuando estés listo.
    • En realidad, puede utilizar git checkout para cambiar su forma de árbol de trabajo en el estado de ningún commit – si no eres la comprobación de una rama, se va a separar de la CABEZA, pero funciona todo bien. (Por ejemplo, es lo que haces cuando tratando de encontrar la última buena cometer al iniciar un git bisect.)
    • Sospecho reset sólo restablece el estado anterior en la parte superior de la reciente (y no deseados) comete… hay una manera de hacer que en términos de movimiento de la CABEZA/rama actual puntero ?
    • Pollet: No, git reset es la porcelana comando que cambia la CABEZA (normalmente la rama actual) para que apunte a la confirmación, y tiene varias opciones (--soft, --hard, --mixed) que determinan qué ocurre árbol de trabajo y el índice cuando eso sucede…
    • OK, otro comando git con un confuso nombre, entonces 🙂

  2. 8

    NO git reset -duro es PERMANENTE!

    Por favor utilice

    git stash -u 
    

    lugar! Si usted tiene una pieza de trabajo en el que usted zapping por accidente, usted todavía puede obtener de vuelta. Esto nunca es empujado a su control remoto, a menos que usted elija para hacerlo haciendo una rama de ella y empujando hacia arriba.

    También, usted está en la derecha la pista que se puede utilizar git checkout para lograr la misma cosa. La sintaxis es

    git checkout HEAD -- . 
    

    Pero tiene el mismo problema que git reset --hard. Stick con stash y va a salvar a perder el cabello en el futuro.

    Respuesta larga

    Las soluciones anteriores revertir todos los cambios. Sin embargo, la pregunta de cómo deshacerse de algunos de los cambios. Voy a añadir este integridad.

    Para hacer esto, usted puede

    git add file1 file2 file3
    git stash save --patch
    

    Ahora se le pedirá para qué es exactamente lo que quiere hacer desaparecer… a lo que cada vez el nivel de granularidad. Así que usted puede de manera segura «rechazar» sólo un par de cambios en un solo archivo si decide hacerlo.

    • Lo que si quiero que sea permanente? A veces me empiezan a hacer cambios que nunca quiero volver a ver.
    • «NO git reset -duro es PERMANENTE!» no, no, ¿qué acerca de git reflog ?
    • Sí, tenga en cuenta que esta respuesta es incorrecta…git reset --hard sólo cambia permanentemente uncommited código

Dejar respuesta

Please enter your comment!
Please enter your name here