Elimina el file 'Iconr' raro del repository

En mi repository de git tengo un file raro en el área de ensayo que se niega a ser revertido, eliminado, comprometido, básicamente no puedo hacer que desaparezca

El file debe ser un antiguo file OS 9 que se encuentra allí en la carpeta durante años.

Hace unos días, Iconr el file en el sistema de files, por lo que ahora git está rastreando la eliminación de Iconr .

Sin embargo, está estancado allí.

El error que obtengo a través de SourceTree (mi git UI client) es

fatal: la carpeta pathspec / Iconr 'no coincidía con ningún file

¿Alguna idea de cómo hacer que Git olvide por completo ese file?

Lo mejor es volver a la command-line para tener un post de error más preciso.

Allí puedes probar un git add -u , seguido de un git commit , para registrar la eliminación de ese file en el repository.
Consulte "El git status dice que el file está eliminado pero git rm dice error: pathspec '…' did not match any files " como ejemplo.

También puede get una vista previa de lo que daría un git clean: git clean -d -x -n (como se explica en " ¿Por qué no hay" pathspec "cuando bash eliminar una carpeta en Git? ")

El otro problema es cuando ese file no se rastrea en absoluto en su twig actual, sino que se rastrea en otra twig. Vea esa respuesta para verificar si ese es el caso.

Como solución general, el file .gitignore se puede editar para ignorar por completo los files Icon\r como se describe en esta input del blog: Sugerencia Git: Ignorar ícono \ r en .gitignore

Los files similares a Icon^M son creados por algunas aplicaciones externas como Folderol que destacan sus carpetas.

Debe eliminar la aplicación que está haciendo eso, o ignorarla en su file .gitignore , por ejemplo

 printf "Icon\r\r" >> .gitignore 

Este es un command de shell. ¿O agregarlo como Icon?? o puede reproducir ^M carácter especial con ControlV y presionando Enter .

Relacionado: ¿Cómo ignorar Icon? en git

Si no quiere comprometer este cambio en su repository, también puede agregarlo a su .gitignore global o agregarlo a .git/info/exclude .

Ver: Usar Git / Ignorar files .

Para eliminar los files usted mismo, intente:

 find . -type f -name 'Icon?' -print -delete 

O si son los únicos que no están clasificados, ejecute: git clean -f .

Lo que se muestra como "Iconr" en SourceTree es realmente "Icon \ r" donde \ r es el valor hexadecimal 0x0d.

La coincidencia de patrón de nombre de file .gitignore es limitada en comparación con POSIX regex. Los patrones de expresiones regulares como "Icon \ r" e "Icon \ x0d" no funcionaron para mí con SourceTree.

Ignorar simple: agregar icon? el patrón en el file .gitignore funcionará para tener files "Iconr" ignorados en SourceTree.

Advertencia: icon? usos ? que es un comodín de un solo carácter. Entonces, files como "Icon \ r", "icona" e "icon3" serán ignorados con un icon? patrón. Por lo tanto, si es necesario, use los nombres de file icon01 , icon02 lugar de icon1 , icon2 con esta solución alternativa para agregar dichos files a git.

Icon? conveniente y suficiente para la mayoría de los casos de uso.

Ignorar con precisión: el Iconr file Iconr preciso se puede ignorar con un editor de binhex.

En el editor binhex, agregue 0a 49 63 6e 6e 0d 0d 0a . Los 0a's adicionales son avances de línea para poner entre corchetes el 'Icono \ r \ r' para la edición posterior de un file de otro modo unix.

Salga y reinicie SourceTree para ver los cambios en vigencia.

Precaución: si usa el 49 63 6e 6e 0d preciso, tenga cuidado de no replacelo con \ n. En otras palabras, no edite .gitignore en un editor de text configurado para replace automáticamente los separadores de línea con este enfoque.

Con base en esta última nota de advertencia, el enfoque simple de ignorar es less frágil que el enfoque de ignorar con precisión.