실제로 존재하는 파일을 제거 할 수 없음-치명적 : pathspec… 파일과 일치하지 않습니다


165

실제로 존재하는 파일을 제거 할 수 없음-치명적 : pathspec ... 파일과 일치하지 않습니다

자식 컨트롤 아래에 단순히 삭제되지 않는 파일이 있습니다. 실패한 명령은 다음과 같습니다.

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

아래에는 디렉토리 내용, 분기 등이 나열되어 있습니다. 지금까지 디렉토리 내에서 rm을 시도하고 재미있는 캐릭터가있는 경우를 대비하여 탈출했으며 실제로 혼란에 빠졌습니다. 웹과 SO를 검색했지만 구체적으로 찾을 수 없습니다. 미리 감사드립니다!

$ 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

최신 정보: Nevik과 Boris의 답변이 많은 도움이되었습니다. 나는 여러 가지 일로 혼란스러워했으며 IntelliJ IDEA (일반적으로 내가 좋아하는 도구 인 BTW)에 의해 악화되었습니다. 먼저, git rm의 'fatal : pathspec'메시지는 도움이되지 않고 오도 할 수 있습니다 (이 바닐라 사용자의 견해로는). 둘째, 파일은 .gitignore에 있지만 질문을하기 전에 파일을 제거했습니다. 그러나 그것은 또한 git와 독립적으로 IDEA의 Ignored Files 기능에 포함되었으며 프로젝트 뷰어에서 (git 상태가 보여주는 것처럼 추적되지 않는 대신) 보여졌습니다. 마지막으로 실험하는 동안 IDEA가 실행 중이며 rm 직후에 파일을 다시 작성하는 것처럼 보입니다. 따라서, Git 동작이 혼란스러워지면 디버깅하는 동안 IDEA를 종료하고 명령 줄 (및 gitk)에서 솔리를 작동시켜야합니다. 그리고 그 SO 사용자는 훌륭합니다. 다시 감사합니다!


15
rm대신 파일을 단순히 제거하려고 git rm했습니까?
Nevik Rehnel 16:10에

1
@NevikRehnel 예, 고맙습니다.하지만 삭제 할 때마다 IntelliJ IDEA (내가 실행 중)가 소생 된 것처럼 보입니다. 도!
Matthew Cornell

Eclipse 및 Attlassian SourceTree와 함께 일하고 있습니다 ... 귀하의 질문은이 문제를 해결하는 데 도움이됩니다. 감사 !
Manu

git clean -f .idea/workspace.xml추적되지 않은 파일을 제거하는 데 사용할 수 있습니다 .
chemturion

답변:


134

파일 .idea/workspace.xml이 자식 버전 제어하에 있지 않습니다. 아직 추가하지 않았거나 (git 상태 / 추적되지 않은 파일 확인) 무시했습니다 (.gitignore 또는 .git / info / exclude 파일 사용)

무시되는 모든 파일을 나열하는 다음 git 명령을 사용하여 확인할 수 있습니다.

git ls-files --others -i --exclude-standard

그게 많은 도움이되었습니다, 보리스 감사합니다! 나는 진행되고있는 것들 (IDEA 등)을 요약하기 위해 나의 질문을 업데이트했다
Matthew Cornell

23
$>git add .
$>git rm file_Name  

효과가있다. 마우스 오른쪽 버튼으로 클릭-> 새 파일 만들기를 사용하여 새 파일을 추가 한 다음 즉시 삭제하십시오. 파일이 추적되지 않은 파일 목록으로 이동합니다.


2
파일을 삭제하는 동안 오류가 발생하면 파일을 삭제하는 동안 다음과 같은 -f를 사용할 수 있습니다. $> git rm -f file_Name
Abhinav bhardwaj

1
누군가 rm디렉토리 또는 파일이 필요할 때 , git 버전 제어에 아직 나열되어 있지 않은 경우 git에 추가 할 필요가 없습니다.
Mohammad Kermani

8

나는 이것이 OP의 문제가 아니라는 것을 알고 있지만 완전히 다른 기준으로 같은 오류가 발생했기 때문에 다른 사람이 동일한 경우 여기에 드롭하고 싶었습니다. 이것은 Windows마다 다르며 Linux 사용자에게는 영향을 미치지 않는다고 가정합니다.

LibreOffice doc 파일이 있습니다 final report.odt. 나중에 사례를로 변경했습니다 Final Report.odt. Windows에서는 이름 바꾸기로 간주되지 않습니다. final report.odt, Final Report.odt, FiNaL RePoRt.oDt모두 동일합니다. 리눅스에서는 이것들이 모두 다르다.

내가 결국 가서 git rm "Final Report.odt""pathspec 일치하는 파일이 없습니다"오류가 발생했습니다. 파일이 추가 될 당시의 원래 케이스를 사용할 때만 git rm "final report.odt"--작동 했습니까?

교훈 : 내가 대신해야했던 사건을 바꾸려면 :

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

다시 한 번, 그것은 OP의 문제가 아니 었습니다. 그의 게시물이 분명하게 보여주는 것처럼 Linux 사용자에게는 영향을 미치지 않습니다. Windows git 에서이 문제가 발생 하여이 질문에 걸려 넘어 질 수있는 다른 사람들을 위해 그것을 포함하고 있습니다.


1
git에 기록 된 것과 경로의 일부가 다른 경우 Windows에서 발생할 수 있습니다. Windows에서 bash 쉘을 사용하여 임시 해결책을 찾을 수있었습니다
Rattle

3

파일 idea/workspace.xml 이 .gitignore (또는 그 상위 폴더)에 추가 되면 add버전 제어를 위해 수동으로 파일 입니다 . TortoiseGit을 사용하여 추가 할 수도 있습니다. 다음 푸시 후에 문제가 해결되었음을 알 수 있습니다.

TortoiseGit을 사용하여 자식 버전 관리에 추가


1
누군가가 rm디렉토리 나 파일을 필요로 할 때 , git 버전 관리에 아직 나열되어 있지 않으면 git에 추가 할 필요가 없습니다!
모하마드 케르 마니

0

제 경우에는 원인이 무엇인지 확실하지 않은 것이 완전히 이상했습니다. 전체 폴더가 이전에 커밋되었습니다. Git, Windows 탐색기 및 GitHub에서 볼 수 있었지만 폴더 자체와 폴더의 파일에 대한 변경 사항은 무시되었습니다. 사용 git check-ignore을 무시하고 사용하여 제거하려고 시도했습니다 것을보고 git rm --cached아무런 영향이 없었다. 변경 사항을 준비 할 수 없습니다.

나는 그것을 고쳤다.

  1. 폴더와 파일을 다른 위치에 복사합니다.
  2. 어떻게 든 무시되는 원본을 삭제했습니다.
  3. 이 업데이트를 커밋하고 푸시하십시오.
  4. 마지막으로 파일과 폴더를 다시 추가하고 git은 다시 예상대로보고 반응했습니다.
  5. 이것을 준비하고 맡기십시오. :)

0

개인적 으로이 시나리오에서 비슷한 오류 메시지가 나타났습니다.

비어 있는 폴더를 만들었습니다. 비어있는 한 자연스럽게 입력 git add *하면이 빈 폴더를 고려하지 않습니다. 따라서 실행하려고 git rm -r *하거나 단순히 자식을 시도했을 때 rm my_empty_folder/ -r,해당 오류 메시지가 나타납니다.

해결책은 단순히 git없이 제거 하거나이 rm -r my_empty_folder/ 폴더 내에 데이터 파일을 만든 다음 추가하는 것입니다 ( git add my_no_long_empty_folder)


0

이러한 단계는 나를 도왔습니다 :

  1. git add.
  2. 자식 숨김

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.