Estoy tratando de actualizar mi repositorio desde una rama remota y sigo recibiendo este error cuando hago un "git pull". No he realizado ningún cambio local, e incluso si lo hice, no necesito mantenerlos.
He intentado:
git reset --hard
y me sale el mismo problema
Lo único que parece funcionar es eliminar el archivo ofensivo e intentar un git pull nuevamente.
También lo intenté git stash
seguido de un git pull
. No vayas.
editar: usando PortableGit-1.6.4-preview20090729, por lo que cualquier error anterior con errores falsos debe corregirse.
git rm --cached learned/tests/temp_funcs.py
: como de todos modos quería que el archivo permaneciera en la lista de Archivos sin seguimiento ,git rm --cached
me desbloqueé en este caso.--abort
. Ninguna de las soluciones propuestas me permitió abortar, excepto eliminar los archivos ofensivos.Respuestas:
Hay un par de formas de solucionar este problema, pero he descubierto que git stash funciona bien para mí. Coloca temporalmente los cambios locales en otro lugar. Luego, puede tirar para obtener los últimos cambios. Y luego puede recuperar sus cambios locales.
Así:
fuente
git rm --cached
, comentario completo: stackoverflow.com/questions/1248029/…Esto puede suceder si actualiza el índice para ignorar ciertos archivos:
y luego, por ejemplo, verifique alguna otra rama:
Forzar la actualización del índice soluciona el problema:
Seguido por:
Y luego todo debería volver a la normalidad.
fuente
git rm --cached learned/tests/temp_funcs.py
: como de todos modos quería que el archivo permaneciera en la lista de Archivos sin seguimiento ,git rm --cached
me desbloqueé en este caso.git update-index --really-refresh
Era la pieza que faltaba! Bien hecho, esto fue difícil de encontrarEste tipo de problema se produce con frecuencia al intentar extraer de un repositorio que tiene dos nombres de archivo que solo difieren en el caso. Si está en FAT, NTFS en modo que no distingue entre mayúsculas y minúsculas (esencialmente, cada vez que se usa en Windows) o HFS + en modo que no distingue entre mayúsculas y minúsculas, y tiene dos archivos "foobar" y "FOOBAR", Git verá dos archivos distintos archivos, pero el sistema de archivos solo verá uno, lo que causará todo tipo de problemas. Git comprobará, digamos, "FOOBAR", y luego comprobará "foobar", que el sistema de archivos ve como simplemente reemplazar el contenido de "FOOBAR" pero dejándolo en su lugar. Ahora para Git, parece que "FOOBAR" ha sido reemplazado con el contenido de "foobar", y "foobar" ha desaparecido.
Hay dos manifestaciones diferentes de este problema básico. Uno es cuando su repositorio realmente contiene dos archivos que difieren solo en el caso. En este caso, debe trabajar en un sistema de archivos que distinga entre mayúsculas y minúsculas, o deberá editar el repositorio para asegurarse de que no se produzcan colisiones de este tipo; un sistema de archivos que no distingue entre mayúsculas y minúsculas simplemente no puede almacenar el contenido de este repositorio.
Un caso diferente que puede solucionar es cuando ocurre un cambio de nombre que cambia el caso del archivo. Digamos, por ejemplo, que el repositorio de Git contiene un cambio de nombre de "EXAMPLE" a "example". Antes de que Git verifique la nueva versión, intentará verificar que no esté sobrescribiendo algún archivo existente que tenga en su disco. Como piensa que "ejemplo" es un nuevo nombre de archivo, le preguntará al sistema de archivos si existe, y el sistema de archivos verá "EJEMPLO" y dirá que sí, por lo que Git se negará a verificar la nueva versión ya que cree que se sobrescribirá. archivos sin seguimiento. En este caso, si no tiene cambios locales que le interesen, un simple
git reset --hard <revision-to-checkout>
generalmente será suficiente para superar el problema y realizar la nueva revisión. Solo intente y recuerde no cambiar el nombre de los archivos a otros nombres que difieran solo en el caso de que esté en un sistema de archivos que no distingue entre mayúsculas y minúsculas, ya que causará problemas como este.fuente
Para obtener más detalles sobre la publicación de @Brian Campbell (porque el restablecimiento completo tampoco funcionó), quiero señalar un caso límite que me estaba deteniendo.
Había movido un archivo
OldFile
a una carpeta diferente y le había cambiado el nombreNewFile
. Luego marqué el archivo comoassume-unchanged
.Esto me impedía cambiar de rama y no había ningún alijo que guardar o comprometerme a empujar. El problema fue que no cometí este cambio de archivo con un nuevo nombre antes de configurar la
assume-unchanged
bandera. Así que lo puse de nuevo enno-assume-unchanged
, lo comprometí, luego loassume-unchanged
puse de nuevo en y pude cambiar de rama nuevamente.fuente
checkout -f
, fallará.En términos generales, esto significa que tiene cambios en sus archivos locales que no se han confirmado en su repositorio local. También puede ver esta pregunta sobre el flujo de pila para obtener más detalles.
fuente
Estaba viendo un problema similar (Windows 10): estaba encendido
branchA
y quería ir amaster
. Tuve algunos cambios no comprometidos, así que primero yogit stash
luego,git checkout -f master
pero todavía tengo elEntry 'fileName' not uptodate. Cannot merge
.git status
no mostraba nada que comprometer.Finalmente, eliminé el archivo manualmente y pude ir a la otra rama (lo que, por supuesto, hizo que mi archivo volviera), así que supongo que ha habido un error dentro de git en alguna parte.
fuente
.gitignore
archivo! Aunque no le había hecho ningún cambio, y git no me permitía "esconderlo" (¡porque no hay cambios locales, duh!). Así que moví el.gitignore
archivo fuera del repositorio (como una especie de "copia de seguridad") y luego hice unagit reset --hard
, que "arregló" el repositorio en un estado sano.git status
me mostró qué archivo se cambió e insinuó que podía usarlo engit restore myFile
lugar de eliminarlo, lo que funcionó.También podría ser un problema con los permisos de archivos. Git también los está versionando, a menos que config diga lo contrario. Solo agrego esta respuesta para personas que tienen casi, pero no un problema similar.
fuente
Vale la pena intentarlo:
¿Podría establecer, solo para esta actualización, establecer el parámetro de configuración
core.trustctime
en falso?fuente
Agregando mi respuesta porque ninguno de los demás menciona esto. En mi caso, esto sucedió después de que agregué nuevos archivos al índice con la
-N
bandera, así que simplemente los agregué al índice sin agregar su contenido. En este estado, hacergit stash
produce este error.fuente
Tuve el mismo error, después de una situación en la que se
git status
decíanew file: foo.cpp
que no se agregó un archivo al área de preparación. es decir, bajo el título "Cambios no preparados para confirmar". Muy extraño, esto generalmente no sucede.Solución:
git add foo.cpp
y luegogit stash
funcionó de nuevo.fuente