Este tipo de problema es causada frecuentemente por tratar de tirar de un repositorio que tiene dos nombres de archivo que se diferencian sólo en el caso. Si está en FAT, NTFS en modo insensible a mayúsculas y minúsculas (esencialmente, cada vez que se usa en Windows) o HFS + en modo insensible a mayúsculas y minúsculas y tiene dos archivos "foobar" y "FOOBAR", entonces Git verá dos archivos, pero el sistema de archivos solo verá uno, lo que causará todo tipo de problemas. Git registrará, digamos, "FOOBAR", y luego presiona "foobar", que el sistema de archivos ve como simplemente reemplazar los contenidos de "FOOBAR" pero dejándolo en su lugar. Ahora, para Git, parece que "FOOBAR" ha sido reemplazado por el contenido de "foobar", y "foobar" se ha ido.
Existen dos manifestaciones diferentes de este problema básico. Una es cuando su repositorio en realidad contiene dos archivos que difieren solo en el caso. En este caso, debe trabajar en un sistema de archivos con distinción 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 insensible a 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 "EJEMPLO" a "ejemplo". Antes de que Git revise la nueva versión, intentará verificar que no sobrescriba algún archivo existente que tenga en su disco. Como cree que "ejemplo" es un nuevo nombre de archivo, 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 la nueva revisión.Intente y recuerde no cambiar el nombre de los archivos a otros nombres que difieran solo en caso de que esté en un sistema de archivos que no distingue entre mayúsculas y minúsculas, ya que esto provocará problemas como este.
Ver si la explicación en http://git.or.cz/gitwiki/GitFaq ayuda. –
Ditto "* Lo único que parece funcionar es eliminar el archivo ofensivo y probar de nuevo una extracción de git. *". Para mí, al menos un archivo no estaba en git; fue ignorado por una regla comodín. Sin embargo, no estoy seguro de por qué fueron bloqueadores. – ruffin