Después de ver lo siguiente desde la línea de comando:
# On branch RB_3.0.10
# 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.htm
Estoy tratando de descartar mis cambios escribiendo el comando:
git checkout -- index.htm
pero cuando vuelvo a ejecutar el estado de git, se ve exactamente igual. El pago no parece estar funcionando. ¿Estoy haciendo algo mal? Estoy usando GIT 1.6.1.2 en windows / cygwin.
# On branch RB_3.0.10
# 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.htm
git checkout HEAD -- index.htm
Funciona (salir del último estado comprometido, en lugar de salir del índice)?git checkout HEAD -- index.htm
¡trabajó para mi!Respuestas:
Esto me ha estado molestando por un tiempo, casi todos los repositorios que revisé tenían cambios que no pude descartar. En pocas palabras, probé todo lo anterior, nada funcionó. Esto es lo que hice para que las cosas vuelvan a la normalidad (en una Mac):
fuente
Aquí está mi experiencia, establezca las siguientes variables en
.git/config
:luego corre
$ git checkout HEAD .
, y funciona. pero$ git checkout -- .
no extraño!* git versión 1.9.3
fuente
¿Qué cambios se
git diff
muestran en el archivo? En Windows, he visto problemas con los finales de línea que causan problemas como este. En ese caso, mira qué configuraciones tienes paragit config core.autocrlf
ygit config core.safecrlf
. Hay alguna documentación para esta configuración aquí .Yo diría que si está utilizando
git svn
para la integración con Subversion, asegúrese de queautocrlf
esté apagado. Por lo que puedo decir, simplemente se rompe en esta configuración y hace que la mayoría de las herramientas piensen que los archivos han cambiado, cuando ha realizado unacheckout
para revertir cualquier cambio.Si está viendo un problema donde lo hace
git checkout
, y luegogit status
muestra que el archivo todavía está modificado, ygit diff
muestra que el archivo está modificado en cada línea del archivo, entonces este es el problema que está viendo.fuente
Creo que necesitas pasar
-f
Desde la página de manual (
man git-checkout
, GIT-CHECKOUT (1)):Por ejemplo, descarte los cambios en la rama actual y cambie a una rama diferente:
fuente
-f
a la salida - <nombre de archivo> como engit checkout -f -- filename
-f
git checkout -f master
lanzó "Ya en 'maestro'" pero los cambios se habían ido.Es posible que se trate de terminaciones de línea, como sugiere @ 1800-information, pero otra posibilidad es que la diferencia (que evita que revierta estos archivos con un comando de pago) es uno de los modos de archivo. Esto es lo que me pasó a mí. En mi versión de git puedes descubrir esto usando
Y le mostrará los cambios en el modo de archivo. Sin embargo, aún no le permitirá revertirlos, utilizando el pago, incluso con la opción -f. Para ese uso ya sea
o cambie su git .config en su editor de texto agregando
Después de hacer esto, puedes usar
y el archivo debería desaparecer.
(Obtuve todo esto de las respuestas a ¿Cómo hago que git ignore los cambios de modo (chmod)? Y la actualización de permisos de archivo solo en git )
fuente
¿Estás en OSX o Windows? Si es así, el problema probablemente sea tener dos archivos del mismo nombre, con mayúsculas y minúsculas. p.ej. index.htm e Index.htm
Windows, y de manera predeterminada OSX, utiliza un sistema de archivos que no distingue entre mayúsculas y minúsculas, lo que entra en conflicto con el git sensible a mayúsculas y minúsculas.
fuente
Tuve este problema y después de probar todo lo anterior, nada funcionó.
Lo que funcionó para mí fue eliminar el directorio en el que estaba el archivo, luego lo hizo
git status
y se aseguró de que todos los archivos en ese directorio ahora estén marcados como eliminados. Después de eso simplemente lo hicegit checkout -f
y todo volvió a la normalidad.fuente
Estaba trabajando en un
libGDX
proyectoAndroid Studio
y quería descartar todos los cambios que he hecho, y nada funcionaba para mí, la solución que se me ocurrió fue comprometer todos los cambios en una nueva sucursaly luego puede eliminar la
TRASH
rama si lo desea.fuente
Tuve el mismo problema, nada de los comentarios anteriores funcionó. Resultó que mi sistema de archivos no distingue entre mayúsculas y minúsculas (valor predeterminado de osx, pero Windows probablemente se comporta igual) y un archivo estaba presente con mayúsculas y minúsculas en el mismo directorio, con contenido diferente. Como en mi computadora ambos nombres apuntaban al mismo archivo, el estado de git siempre mostraba una modificación, sin importar lo que hiciera. Para resolver el problema:
Tuve que eliminar uno de los archivos de otra computadora y empujarlo para repositorio
eliminar toda la versión local por completo
hacer clon git desde cero
fuente
He tenido un problema similar, en el que no me permitía descartar archivos que no existen o se han cambiado. Utilizo Visual Studio en el trabajo, y descubrí que esto sucede al cambiar de rama mientras la aplicación se está ejecutando.
git checkout
e intentar descartarlo no ayudó. No funcionaría o simplemente me diría que no tengo permiso.Solución que funcionó:
Reiniciar es un dolor, pero esto funcionó más rápido que probar 100 cosas.
fuente
Hay una solución fácil. Si esto sucede (normalmente debido al apagado inesperado de Windows o al volcado de memoria) y no puede descartar sus cambios e incluso cambiar de rama (Git dice que no tiene suficiente permiso); en
Windows
entornoshow all hidden files and folders
de opciones de carpeta. Vaya a su directorio GIT (debe comenzar con.git
) y elimine el"index.lock"
archivo. Entonces Git debería dejarte hacer lo que quieras hacer.fuente
Terminé haciendo un
git stash
seguido de ungit stash clean
para deshacerme de algunos. No vi ninguna configuración automática de cr / lf en .git / o ~ / .git.fuente
En mi caso, no pude descartar los cambios relacionados con un directorio. por ejemplo, cuando ejecuté un git diff, vería esto:
-Subproject commit fdcccccccccccccccccccccccccccccccccccccc +Subproject commit f1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
Entonces llamé a ese directorio y ejecuté un estado git allí. Estaba en un estado separado de la CABEZA. Y luego acabo de correr un
git checkout master
allí. Eso me arregló las cosas. Pero esto no es útil para el escenario exacto solicitado aquí.fuente
Esta es una vieja pregunta, pero aún era relevante para mí. No encontré mi respuesta hasta preguntar por la oficina y descubrí que el problema estaba en los submódulos. Cuando se actualizan, y su propio repositorio no refleja esos cambios, aparece con diferencias, restablecer la cabeza no ayuda. Si este es el caso, ejecute:
Eso debería ayudar a arreglar las cosas (en este caso particular)
fuente
Tuve un problema de permisos en Windows y tuve que hacerlo
icacls containingFolder /reset /t /l /c
y luego hacer doble clic en la carpeta para recuperar mis permisos.fuente
Tenía .gitattributes con el siguiente contenido:
* text=auto eol=lf
Para superar el problema, edite
.gitattributes
para eliminar esta línea que relaja las terminaciones de línea. Luegogit reset --hard HEAD
revirtió los archivos y el.gitattributes
archivo.fuente
Para mí, este problema surgió con una combinación de descarga de una imagen Git-LFS que se cargó a través de Netlify CMS y que su manejador Netlify Large Media le sirvió de manera diferente.
Mi solución fue comentar / eliminar estas filas de mi
~/.gitconfig
para que se vean a continuación, y luego verificargit status
nuevamente.O probablemente pueda agregar un filtro más local a través de a
.gitconfig
en la raíz del repositorio y de alguna manera sobrescribir las reglas de filtro para lfs allí.Espero que esto ayude a un compañero.
fuente
También enfrenté un problema similar y los siguientes pasos me ayudaron:
Espero que ayude a otras personas también.
fuente