nie można usunąć pliku, który naprawdę istnieje-fatal: pathspec ... nie pasował do żadnych plików

Nie można usunąć pliku, który naprawdę istnieje-fatal: pathspec ... nie pasowały żadne pliki

Mam plik pod kontrolą git, który po prostu nie zostanie usunięty. Błędna Komenda to:

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

Poniżej podaję zawartość katalogu, gałęzie itp. Do tej pory próbowałem rm z katalogu, i uciekam tylko na wypadek, gdyby były śmieszne postacie, i jestem naprawdę zdumiony. Szukałem w sieci i tak, ale nie mogłem znaleźć tego konkretnie.

$ 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

Update

Odpowiedzi od @ Nevik i @ Boris bardzo pomogły. Zdałem sobie sprawę, że byłem zdezorientowany przez wiele rzeczy się dzieje, z których niektóre zostały zaostrzone przez IntelliJ IDEA(narzędzie, które ogólnie kocham, BTW). Po pierwsze, wiadomość "fatal: pathspec" z git rm jest zarówno nieprzydatna, jak i wprowadzająca w błąd.

Po Drugie, miałem plik w .gitignore, ale usunąłem go przed zadaniem pytania. Jednak został on również zawarty w funkcji ignorowanych plików IDEA niezależnie od git, oraz pokazane jako takie w przeglądarce projektu(zamiast untracked, jak pokazano git status). W końcu wpadłem na pomysł, kiedy eksperymentowałem i wygląda na to, że odtwarzał plik zaraz po moim rm.

Moja propozycja jest taka, że jeśli robię się mylący w zachowaniu Gita, upewnij się, że zakończyłeś program IDEA i działasz wyłącznie w wierszu poleceń (i gitk) podczas debugowania.

Author: Jan Schultke, 2013-04-10

8 answers

Twój plik {[1] } nie jest pod kontrolą wersji git. Albo nie dodałeś go jeszcze (sprawdź git status / pliki nie śledzone) albo zignorowałeś go (używając .gitignore lub .git / info / exclude files)

Możesz to zweryfikować używając następującego polecenia git, które wyświetla listę wszystkich ignorowanych plików:

git ls-files --others -i --exclude-standard
 136
Author: Boris Brodski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-10 16:35:36
$>git add .
$>git rm file_Name  
To działa. Dodajesz nowy plik klikając prawym przyciskiem myszy - > utwórz nowy plik, a następnie natychmiast go usuwasz. Plik trafi do listy plików nie śledzonych.
 24
Author: gnganapath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-21 18:26:17

Wiem, że to nie jest problem OP, ale natknąłem się na ten sam błąd z zupełnie inną podstawą, więc chciałem rzucić go tutaj na wypadek, gdyby ktoś inny miał to samo. Jest to specyficzne dla systemu Windows i zakładam, że nie wpływa na użytkowników Linuksa.

Miałem plik LibreOffice doc, nazwij go final report.odt. Później zmieniłem jego przypadek na Final Report.odt. W systemie Windows To nawet nie liczy się jako zmiana nazwy. final report.odt, Final Report.odt, FiNaL RePoRt.oDt Wszystkie są takie same. W Linuksie są one różne.

Kiedy w końcu poszedłem do git rm "Final Report.odt" i dostał błąd "pathspec nie pasował do żadnych plików". Tylko wtedy, gdy użyłem oryginalnej obudowy w momencie dodania pliku -- git rm "final report.odt" -- zadziałało.

Lekcja nauczona: aby zmienić sprawę, powinienem był zrobić:

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

Ponownie, to nie był problem dla OP tutaj; i nie wpłynie na użytkownika Linuksa, jak jego posty pokazują, że jest. Włączam go tylko dla innych, którzy mogą mieć ten problem w Windows git i natknąć się na to pytanie.

 10
Author: codingatty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-23 00:47:34

Jeśli Twój plik {[0] } zostanie dodany do .gitignore (lub jego folder nadrzędny) po prostu add to ręcznie do kontroli wersji git. Możesz również dodać go za pomocą TortoiseGit. Po kolejnym naciśnięciu zobaczysz, że twój problem jest rozwiązany.

Dodawanie do wersji git przy użyciu TortoiseGit

 3
Author: Lord Nighton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-13 20:05:05

Takie kroki mi pomogły:

  1. git add .
  2. git stash
 1
Author: Mykola,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-02 07:02:07

W moim przypadku było coś zupełnie dziwnego, że nie jestem pewien, co było przyczyną. Cały folder został utworzony wcześniej. Mogłem go zobaczyć w Git, Windows Explorer i GitHub, ale wszelkie zmiany wprowadzone w samym folderze i plikach w nim były ignorowane. Użycie git check-ignore, aby zobaczyć, co go ignoruje, i próba usunięcia go za pomocą git rm --cached nie miała wpływu. Zmian nie udało się wprowadzić.

Naprawiłem przez:

  1. wykonanie kopii folderu i plików w inne miejsce.
  2. Usunąłem oryginał, który został jakoś zignorowany.
  3. Zatwierdź i wypchnij tę aktualizację.
  4. W końcu dodałem pliki i folder z powrotem, a git znowu widział i reagował na to zgodnie z oczekiwaniami.
  5. Skonfiguruj to i możesz iść! :)
 0
Author: Will Strohl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-27 15:16:06

Osobiście natknąłem się na podobny komunikat o błędzie w tym scenariuszu:

Utworzyłem folder, który był pusty, więc oczywiście dopóki jest pusty, wpisanie git add * nie będzie uwzględniało tego pustego folderu. Więc kiedy próbowałem uruchomić git rm -r * lub po prostu git rm my_empty_folder/ -r, dostałem ten Komunikat o błędzie.

Rozwiązaniem jest po prostu usunięcie go bez git: rm -r my_empty_folder/ lub utworzenie pliku z danymi w tym folderze, a następnie dodanie go (git add my_no_long_empty_folder)

 0
Author: Billal Begueradj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-18 14:43:31

Przesuń tymczasowo .gitignore do .gitignore.bck

 -6
Author: user4551034,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-10 17:58:37