No se puede restablecer un file a una confirmación específica usando Git

Tengo un file modificado que quiero rever a lo que está en la última confirmación, pero está "atascado" y siempre está marcado como modificado.

$ git status # On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: index.php # no changes added to commit (use "git add" and/or "git commit -a") 

Entonces bash:

 $git checkout -- index.php 

Pero el resultado del estado de git sigue siendo el mismo. Entonces bash:

 $git reset --hard master HEAD is now at 02c9613 test commit message 

Y el resultado del estado de git sigue SIENDO igual.

¿Alguna idea sobre cómo puedo deshacerme de los supuestos cambios en ese file?

Es posible que te encuentres con un problema de espacio en blanco. git config --global apply.whitespace nowarn para eso.

Si eso no funciona, diría que te has encontrado con un error. Guarde el clon local para futuras references (espero que no sea demasiado grande) y cree un informe de errores. Especialmente los hechos que:

  • usted no ha modificado el file usted mismo
  • otros files no muestran este problema

son signos de que tal vez no sea usted quien cometió el error aquí. Si puedes reproducir el problema en un repository limpio también sería información interesante.

Tienes que eliminar index.php del "índice". Entonces, ¿puedes pagar una versión diferente?

 git rm --cached index.php 

Debería hacer el truco. Ver:

http://www.kernel.org/pub/software/scm/git/docs/git-rm.html

Has probado:

 $ git checkout master -f -- index.php 

o

 $ git checkout master -f 

?

No puedo ver por qué esto funcionaría si el reset no lo hiciera, pero vale la pena intentarlo.

testing git ls-files -m | xargs -i git update-index --assume-unchanged "{}" git ls-files -m | xargs -i git update-index --assume-unchanged "{}"

FWIW, pude resolver el problema eliminando los subdirectorys .git dentro de los directorys que se mostraban modificados. Una vez que los subdirectorys .git (como los subdirectorys eran proyectos .git en sí mismos) habían desaparecido, las carpetas principales ya no mostraban modificaciones. Si los files en cuestión están en la misma carpeta que una carpeta .git no relacionada, eso también podría tener un efecto.

Estaba atrapado en el mismo desastre. Tenía algunos files de los que no me podía deshacer en git status . Después de intentar restablecer o verificar los files de alguna manera, decidí agregar los files problemáticos y confirmarlos. Git parecía feliz con eso. Luego volví a la confirmación anterior y el problema fue resuelto, los files problemáticos habían desaparecido.

No explica el error, pero si esta solución puede resolverlo, eso ya es algo bueno.