2010-12-14 19 views
11

Tengo un archivo modificado que quiero rever a lo que está en la última confirmación, pero está "atascado" y siempre está marcado como modificado.No se puede restablecer un archivo a una confirmación específica usando Git

$ 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 trato:

$git checkout -- index.php 

Pero la salida de git status sigue siendo el mismo. Luego intento:

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

Y la salida del estado de git sigue siendo la misma.

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

+0

¿Qué tipo de modificaciones hay? – Cascabel

+2

¿Cuál es el resultado de 'git diff'. Huele a http://stackoverflow.com/search?q=[git]+autocrlf. – Rudi

+0

El diff muestra principalmente cambios de fin de línea. Tenga en cuenta que no he cambiado este archivo en absoluto. Esto vino de un nuevo miembro del equipo. Echaré un vistazo al enlace de Rudi. – Julian

Respuesta

3

Es posible que se encuentre con whitespace issue intente 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 referencias (espero que no sea demasiado grande) y cree un informe de errores. Especialmente los siguientes hechos:

  • no ha modificado el archivo usted mismo
  • otros archivos no muestran este problema

son signos de que sólo podría no ser que cometió el error aquí . Si puedes reproducir el problema en un repositorio limpio también sería información interesante.

+0

Clonado el repositorio de nuevo y funciona bien. Parece que no puede reproducir el error en el nuevo repositorio. Lamentablemente, el código aquí no es de código abierto, así que no puedo enviarlo en un informe de error :( – Julian

3

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

+1

La salida 'git status' de Julian no muestra nada como agregado al índice. – jamessan

+0

Mike, cuando ejecuto el comando git rm, git quiere que realice los cambios que me parecen extraños ya que no quiero tener nada que ver con este archivo; Solo quiero que sea exactamente como se muestra en github. – Julian

1

¿Has probado:

$ git checkout master -f -- index.php 

o

$ git checkout master -f 

?

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

+0

Gauthier, el primer comando que mencionas no tuvo ningún efecto. Pero el segundo hizo algo muy interesante. Si bien no hizo nada al principio, decidí modificar otro archivo y el estado de git lo marcó como modificado. Después de ejecutar su segunda sugerencia, mi archivo modificado volvió a su estado original mientras el index.php aún permanecía modificado. Estoy muy cerca de clonar el repositorio desde el origen nuevamente. – Julian

+0

Sugeriría ejecutar 'git diff' como se sugirió anteriormente. – Gauthier

+1

"git checkout master -f" me ayudó! gracias –

0

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

1

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

+0

Solo ten cuidado, tendrás que quitar esa bandera para ver los cambios nuevamente usando '--no-assume-unchanged' – d4Rk

0

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

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

Cuestiones relacionadas