incapaz de eliminar el archivo que realmente existe - fatal: pathpec ... no coincide con ningún archivo

165

no se puede eliminar el archivo que realmente existe - fatal: pathpec ... no coincide con ningún archivo

Tengo un archivo bajo control de git que simplemente no se eliminará. El comando que falla es:

$ git rm .idea/workspace.xml
fatal: pathspec '.idea/workspace.xml' did not match any files

A continuación enumero el contenido del directorio, las ramas, etc. Hasta ahora he intentado rm desde dentro del directorio y escapo por si hay caracteres divertidos, y estoy realmente perplejo. Busqué en la web y SO, pero no pude encontrar esto específicamente. ¡Gracias por adelantado!

$ git branch -a
* dot-output
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/modelspace
$ 

$ git status
# On branch dot-output
# Untracked files:
# ...

$ ls .idea/
ant.xml         encodings.xml       modules.xml     workspace.xml
compiler.xml        inspectionProfiles  scopes
copyright       libraries       testrunner.xml
dictionaries        misc.xml        vcs.xml

$ ls -al
total 56
drwxr-xr-x  16 matt  staff    544 Apr 10 11:33 .
drwxr-xr-x@ 33 matt  staff   1122 Apr 10 09:40 ..
-rw-r--r--@  1 matt  staff  12292 Apr 10 11:19 .DS_Store
drwxr-xr-x  18 matt  staff    612 Apr 10 11:39 .git
-rw-r--r--   1 matt  staff     98 Mar  6 13:40 .gitignore
drwxr-xr-x  16 matt  staff    544 Apr 10 11:34 .idea
-rw-r--r--   1 matt  staff   1113 Feb 25 11:07 README
...

$ head -n 2 .idea/workspace.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">

$ git rm .idea/workspace.xml
fatal: pathspec '.idea/workspace.xml' did not match any files

ACTUALIZAR: Las respuestas de Nevik y Boris ayudaron mucho. Me di cuenta de que estaba confundido por una serie de cosas que estaban sucediendo, algunas de las cuales fueron exacerbadas por IntelliJ IDEA (una herramienta que generalmente amo, por cierto). Primero, el mensaje 'fatal: pathpec' de git rm es inútil y engañoso (en opinión de este usuario de vainilla). En segundo lugar, tenía el archivo en .gitignore, pero lo había eliminado antes de hacer mi pregunta. Sin embargo, también se incluyó en la función de archivos ignorados de IDEA independientemente de git, y se mostró como tal en el visor del proyecto (en lugar de sin seguimiento, como lo mostró el estado de git). Finalmente, tenía IDEA ejecutándose mientras estaba experimentando, y parece que estaba recreando el archivo inmediatamente después de mi rm. Entonces, mi conclusión es que si me estoy confundiendo el comportamiento de Git, asegúrese de salir de IDEA y trabajar soley en la línea de comando (y gitk) durante la depuración. Y que los usuarios de SO son increíbles. ¡Gracias de nuevo!

Matthew Cornell
fuente
15
¿Has intentado simplemente eliminar el archivo en rmlugar de git rm?
Nevik Rehnel
1
@NevikRehnel Sí, pensé en intentarlo, gracias, pero parece que IntelliJ IDEA (que tenía en ejecución) resucitó después de cada eliminación. Doh!
Matthew Cornell
Estoy trabajando con Eclipse y Attlassian SourceTree ... su pregunta me ayuda a resolver este problema. Gracias !
Manu
Puede usar git clean -f .idea/workspace.xmlpara eliminar el archivo no rastreado.
chemturion

Respuestas:

134

Su archivo .idea/workspace.xmlno está bajo el control de versión de git. No lo ha agregado todavía (verifique el estado de git / archivos sin seguimiento) o lo haya ignorado (usando .gitignore o .git / info / excluir archivos)

Puede verificarlo usando el siguiente comando git, que enumera todos los archivos ignorados:

git ls-files --others -i --exclude-standard
Boris Brodski
fuente
Eso ayudó mucho, Boris. ¡Gracias! He actualizado mi pregunta para resumir las cosas que estaban sucediendo (IDEA, etc.)
Matthew Cornell
23
$>git add .
$>git rm file_Name  

Funciona. Agregue un archivo nuevo haciendo clic con el botón derecho -> crear un archivo nuevo e inmediatamente elimínelo. El archivo iría a la lista de archivos sin seguimiento.

gnganpath
fuente
2
Si le da un error al eliminar el archivo, al eliminarlo puede usar -f algo como: $> git rm -f nombre_archivo
Abhinav bhardwaj
1
Cuando alguien necesita rmun directorio o un archivo, él / ella no necesita agregarlo a git si aún no figura en el control de versiones de git.
Mohammad Kermani
8

Sé que este no es el problema del OP, pero me encontré con el mismo error con una base completamente diferente, así que solo quería dejarlo aquí en caso de que alguien más tenga el mismo. Esto es específico de Windows, y supongo que no afecta a los usuarios de Linux.

Tenía un archivo de documento de LibreOffice, llámalo final report.odt. Más tarde cambié su caso a Final Report.odt. En Windows, esto ni siquiera cuenta como un cambio de nombre. final report.odt, Final Report.odt, FiNaL RePoRt.oDtSon todos iguales. En Linux, estos son todos distintos.

Cuando finalmente fui git rm "Final Report.odt"y obtuve el error "pathpec no coincide con ningún archivo". Solo cuando utilicé la carcasa original en el momento en que se agregó el archivo git rm "final report.odt", funcionó.

Lección aprendida: para cambiar el caso, debería haber hecho:

git mv "final report.odt" temp.odt
git mv temp.odt "Final Report.odt"

Nuevamente, ese no era el problema para el OP aquí; y no afectaría a un usuario de Linux, como sus publicaciones muestran que claramente lo es. Solo lo incluyo para otros que pueden tener este problema en Windows Git y tropezar con esta pregunta.

codificación
fuente
1
Esto puede suceder en Windows si alguna parte de la ruta es diferente en caso de lo que está registrado en git. Pude solucionar el problema usando un shell bash en Windows
Rattle
3

Si su archivo idea/workspace.xml se agrega a .gitignore (o su carpeta principal), solo addmanualmente para el control de versiones de git. También puedes agregarlo usando TortoiseGit. Después del siguiente impulso, verá que su problema está resuelto.

Agregar a versiones de git usando TortoiseGit

Lord Nighton
fuente
1
Cuando alguien necesita rmun directorio o un archivo, ¡no necesita agregarlo a git si aún no aparece en el control de versiones de git!
Mohammad Kermani
0

En mi caso, había algo completamente extraño que no estoy seguro de cuál era la causa. Se confirmó una carpeta completa anteriormente. Pude verlo en Git, el Explorador de Windows y GitHub, pero se ignoraron los cambios que hice en la carpeta y los archivos que contiene. Usar git check-ignorepara ver qué lo estaba ignorando e intentar eliminarlo no git rm --cachedtuvo ningún impacto. Los cambios no se pudieron organizar.

Lo arreglé por:

  1. Hacer una copia de la carpeta y los archivos en otra ubicación.
  2. Eliminé el original que estaba siendo ignorado de alguna manera.
  3. Comprometerse e impulsar esta actualización.
  4. Finalmente, agregué los archivos y la carpeta y git lo estaba viendo y reaccionando como se esperaba nuevamente.
  5. Organiza y compromete esto, ¡y listo! :)
Will Strohl
fuente
0

Personalmente me topé con un mensaje de error similar en este escenario:

Creé una carpeta que ha estado vacía , por lo que, naturalmente, mientras esté vacía, escribir git add *no tendrá en cuenta esta carpeta vacía. Entonces, cuando intenté ejecutar git rm -r *o simplemente git rm my_empty_folder/ -r,, recibí ese mensaje de error.

La solución es simplemente eliminarlo sin git: rm -r my_empty_folder/ o crear un archivo de datos dentro de esta carpeta y luego agregarlo ( git add my_no_long_empty_folder)

Billal Begueradj
fuente
0

Tales pasos me ayudaron:

  1. git add.
  2. escondite
Mykola
fuente
-6

Mover temporalmente .gitignore a .gitignore.bck

usuario4551034
fuente