nie można usunąć pliku, który naprawdę istnieje - fatal: pathspec ... nie pasuje do żadnych plików
Mam plik pod kontrolą gita, który po prostu nie zostanie usunięty. Niepowodzenie polecenia to:
$ git rm .idea/workspace.xml
fatal: pathspec '.idea/workspace.xml' did not match any files
Poniżej wymieniam zawartość katalogu, gałęzie itp. Do tej pory próbowałem rm z poziomu katalogu i ucieczki na wypadek, gdyby były zabawne postacie i jestem naprawdę zaskoczony. Przeszukałem Internet i SO, ale nie mogłem znaleźć tego konkretnie. Z góry dziękuję!
$ 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
AKTUALIZACJA: Odpowiedzi Nevika i Borisa bardzo pomogły. Zdałem sobie sprawę, że byłem zdezorientowany przez wiele rzeczy, z których niektóre zostały zaostrzone przez IntelliJ IDEA (narzędzie, które generalnie uwielbiam, BTW). Po pierwsze, komunikat „fatal: pathspec” z git rm jest zarówno nieprzydatny, jak i wprowadzający w błąd (w opinii tego użytkownika waniliowego). Po drugie, miałem plik w .gitignore, ale usunąłem go przed zadaniem pytania. Jednak został również uwzględniony w funkcji Ignored Files IDEA niezależnie od git i pokazany jako taki w przeglądarce projektu (zamiast nieśledzonego, jak pokazał status git). W końcu miałem uruchomiony IDEA podczas eksperymentowania i wygląda na to, że odtwarzał plik natychmiast po moim rm. Tak więc, moim wnioskiem jest to, że jeśli mylę się z zachowaniem Gita, pamiętaj, aby wyjść z IDEA i pracować samodzielnie w wierszu poleceń (i gitk) podczas debugowania. I że użytkownicy SO są niesamowici. Dzięki jeszcze raz!
źródło
rm
zamiastgit rm
?git clean -f .idea/workspace.xml
aby usunąć nieśledzony plik.Odpowiedzi:
Twój plik
.idea/workspace.xml
nie znajduje się pod kontrolą wersji git. Albo jeszcze go nie dodałeś (sprawdź stan git / niezatwierdzone pliki) albo zignorowałeś (używając plików .gitignore lub .git / info / exclude)Możesz to sprawdzić za pomocą następującego polecenia git, które wyświetla listę wszystkich ignorowanych plików:
źródło
To działa. Dodajesz nowy plik prawym przyciskiem myszy -> utwórz nowy plik, a następnie natychmiast go usuń. Plik zostanie przeniesiony na listę plików bez śledzenia.
źródło
rm
katalogu lub pliku, nie musi dodawać go do git, jeśli nie jest jeszcze wymieniony pod kontrolą wersji git.Wiem, że to nie jest problem OP, ale napotkałem ten sam błąd na zupełnie innej podstawie, więc chciałem go tutaj zostawić na wypadek, gdyby ktoś inny miał to samo. Jest to specyficzne dla systemu Windows i zakładam, że nie ma to wpływu na użytkowników Linuksa.
Miałem plik doc LibreOffice, nazwij to
final report.odt
. Później zmieniłem jego obudowę naFinal Report.odt
. W systemie Windows nie liczy się to nawet jako zmiana nazwy.final report.odt
,Final Report.odt
,FiNaL RePoRt.oDt
Wszystkie są takie same. W Linuksie wszystkie są różne.Kiedy w końcu poszedłem do
git rm "Final Report.odt"
i otrzymałem błąd „pathspec nie pasuje do żadnych plików”. Dopiero gdy używam oryginalnej obudowy w momencie dodawania pliku -git rm "final report.odt"
- zadziałało.Wyciągnięta lekcja: zamiast tego powinienem był zmienić przypadek:
Znowu to nie był problem dla PO tutaj; i nie wpłynie na użytkownika Linuksa, jak wyraźnie pokazują jego posty. Po prostu dołączam to dla innych, którzy mogą mieć ten problem w systemie Windows git i natknąć się na to pytanie.
źródło
Jeśli twój plik
idea/workspace.xml
zostanie dodany do .gitignore (lub jego folderu nadrzędnego), wystarczyadd
go ręcznie, aby kontrolować wersję git. Możesz również dodać go za pomocą TortoiseGit. Po kolejnym naciśnięciu zobaczysz, że Twój problem został rozwiązany.źródło
rm
katalogu lub pliku, nie musi dodawać go do git, jeśli nie jest jeszcze wymieniony pod kontrolą wersji git!W moim przypadku było coś zupełnie dziwnego, że nie jestem pewien, jaka była przyczyna. Cały folder został wcześniej zatwierdzony. Widziałem to w Git, Windows Explorer i GitHub, ale wszelkie zmiany, które wprowadziłem w samym folderze i zawartych w nim plikach, zostały zignorowane. Używanie,
git check-ignore
aby zobaczyć, co go ignorowało, i próba usunięcia go za pomocągit rm --cached
nie miało żadnego wpływu. Zmian nie można było przeprowadzić.Naprawiłem to przez:
źródło
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, o ile jest pusty, pisanie
git add *
nie będzie uwzględniać tego pustego folderu. Więc kiedy próbowałem uruchomićgit rm -r *
lub po prostu gitrm my_empty_folder/ -r,
, otrzymałem ten komunikat o błędzie.Rozwiązaniem jest po prostu usunięcie go bez git:
rm -r my_empty_folder/
lub utworzenie pliku danych w tym folderze, a następnie dodanie go (git add my_no_long_empty_folder
)źródło
Takie kroki pomogły mi:
źródło
Przenieś tymczasowo .gitignore do .gitignore.bck
źródło