tidak dapat menghapus file yang benar-benar ada - fatal: pathspec ... tidak cocok dengan file apa pun

165

tidak dapat menghapus file yang benar-benar ada - fatal: pathspec ... tidak cocok dengan file mana pun

Saya memiliki file di bawah kontrol git yang tidak akan dihapus. Perintah yang gagal adalah:

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

Di bawah ini saya daftar isi direktori, cabang, dll. Sejauh ini saya sudah mencoba rm dari dalam direktori, dan melarikan diri kalau-kalau ada karakter lucu, dan saya benar-benar bingung. Saya mencari di web dan SO tetapi tidak dapat menemukan ini secara khusus. Terima kasih sebelumnya!

$ 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

MEMPERBARUI: Jawaban dari Nevik dan Boris banyak membantu. Saya menyadari bahwa saya bingung dengan sejumlah hal yang terjadi, beberapa di antaranya diperburuk oleh IntelliJ IDEA (alat yang biasanya saya sukai, BTW). Pertama, pesan 'fatal: pathspec' dari git rm tidak membantu dan menyesatkan (menurut pendapat pengguna vanili ini). Kedua, saya memiliki file di .gitignore, tetapi telah menghapusnya sebelum menanyakan pertanyaan saya. Namun, itu juga termasuk dalam fitur File Diabaikan IDEA secara independen dari git, dan ditampilkan seperti itu di penampil proyek (bukannya tidak terlacak, seperti yang ditunjukkan status git). Akhirnya, saya menjalankan IDEA saat saya bereksperimen, dan sepertinya sedang membuat ulang file segera setelah rm saya. Jadi, kesimpulan saya adalah jika saya mendapatkan perilaku Git yang membingungkan, pastikan untuk keluar dari IDEA dan bekerja sendiri di baris perintah (dan gitk) saat melakukan debugging. Dan pengguna SO itu luar biasa. Terima kasih lagi!

Matthew Cornell
sumber
15
sudahkah Anda mencoba menghapus file dengan rmbukan git rm?
Nevik Rehnel
1
@NevikRehnel Ya, saya sudah berpikir untuk mencobanya, terima kasih, tapi sepertinya IntelliJ IDEA (yang sudah saya jalankan) diresusitasi setelah setiap penghapusan. Doh!
Matthew Cornell
Saya bekerja dengan Eclipse dan Attlassian SourceTree ... pertanyaan Anda membantu saya untuk menyelesaikan masalah ini. Terima kasih!
Manu
Anda dapat menggunakan git clean -f .idea/workspace.xmluntuk menghapus file yang tidak dilacak.
chemturion

Jawaban:

134

File Anda .idea/workspace.xmltidak di bawah kontrol versi git. Anda belum menambahkannya (periksa status git / File tidak dilacak) atau mengabaikannya (menggunakan file .gitignore atau .git / info / exclude)

Anda dapat memverifikasinya menggunakan perintah git berikut, yang mencantumkan semua file yang diabaikan:

git ls-files --others -i --exclude-standard
Boris Brodski
sumber
Itu sangat membantu, Boris. Terima kasih! Saya telah memperbarui pertanyaan saya untuk merangkum hal-hal yang sedang terjadi (IDEA, dll)
Matthew Cornell
23
$>git add .
$>git rm file_Name  

Berhasil. Anda menambahkan file baru menggunakan klik kanan -> buat file baru, dan segera hapus setelah itu. File akan masuk ke daftar file yang tidak dilacak.

gnganpath
sumber
2
Jika itu memberi Anda kesalahan saat menghapus file, maka saat menghapus file Anda dapat menggunakan -f sesuatu seperti: $> git rm -f file_Name
Abhinav bhardwaj
1
Ketika seseorang perlu rmdirektori atau file, dia tidak perlu menambahkannya ke git jika belum terdaftar di bawah kontrol versi git.
Mohammad Kermani
8

Saya tahu ini bukan masalah OP, tapi saya mengalami kesalahan yang sama dengan basis yang sama sekali berbeda, jadi saya hanya ingin menjatuhkannya di sini kalau-kalau ada orang lain yang sama. Ini khusus untuk Windows, dan saya berasumsi tidak memengaruhi pengguna Linux.

Saya punya file dokumen LibreOffice, sebut saja final report.odt. Saya kemudian mengubah kasingnya menjadi Final Report.odt. Di Windows, ini bahkan tidak dihitung sebagai ganti nama. final report.odt, Final Report.odt, FiNaL RePoRt.oDtSemua sama. Di Linux, ini semua berbeda.

Ketika saya akhirnya pergi ke git rm "Final Report.odt"dan mendapatkan kesalahan "pathspec tidak cocok dengan file apa pun". Hanya ketika saya menggunakan casing asli pada saat file ditambahkan - git rm "final report.odt"- apakah itu berhasil.

Hal yang dipelajari: untuk mengubah kasus yang seharusnya saya lakukan:

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

Sekali lagi, itu bukan masalah bagi OP di sini; dan tidak akan memengaruhi pengguna Linux, seperti yang ditunjukkan oleh posnya. Saya hanya memasukkannya untuk orang lain yang mungkin memiliki masalah ini di Windows git dan menemukan pertanyaan ini.

codingatty
sumber
1
Ini dapat terjadi pada Windows jika ada bagian dari jalur yang berbeda dalam hal apa yang dicatat dalam git. Saya bisa mengatasinya dengan menggunakan bash shell di Windows
Rattle
3

Jika file Anda idea/workspace.xml ditambahkan ke .gitignore (atau folder induknya) hanya addsecara manual untuk kontrol versi git. Anda juga dapat menambahkannya menggunakan TortoiseGit. Setelah dorongan berikutnya Anda akan melihat, bahwa masalah Anda terpecahkan.

Tambahkan ke versi git menggunakan TortoiseGit

Tuan Nighton
sumber
1
Ketika seseorang perlu rmdirektori atau file, dia tidak perlu menambahkannya ke git jika belum terdaftar di bawah kontrol versi git!
Mohammad Kermani
0

Dalam contoh saya, ada sesuatu yang sangat aneh sehingga saya tidak yakin apa penyebabnya. Seluruh folder dilakukan sebelumnya. Saya bisa melihatnya di Git, Windows Explorer, dan GitHub, tetapi setiap perubahan yang saya buat pada folder itu sendiri dan file di dalamnya diabaikan. Menggunakan git check-ignoreuntuk melihat apa yang mengabaikannya, dan mencoba menghapusnya menggunakan git rm --cachedtidak berdampak. Perubahan tidak dapat dipentaskan.

Saya memperbaikinya dengan:

  1. Membuat salinan folder dan file di lokasi lain.
  2. Saya menghapus yang asli yang entah bagaimana diabaikan.
  3. Komit dan dorong pembaruan ini.
  4. Akhirnya, saya menambahkan file dan folder kembali dan git melihat dan bereaksi seperti yang diharapkan lagi.
  5. Panggung dan komitlah ini, dan Anda siap berangkat! :)
Will Strohl
sumber
0

Secara pribadi saya menemukan pesan kesalahan serupa dalam skenario ini:

Saya membuat folder yang kosong , jadi tentu saja asalkan kosong, mengetik git add *tidak akan mempertimbangkan folder kosong ini. Jadi ketika saya mencoba menjalankan git rm -r *atau git rm my_empty_folder/ -r,saya mendapat pesan kesalahan itu.

Solusinya adalah cukup menghapusnya tanpa git: rm -r my_empty_folder/ atau membuat file data dalam folder ini dan kemudian menambahkannya ( git add my_no_long_empty_folder)

Billal Begueradj
sumber
0

Langkah-langkah semacam itu membantu saya:

  1. git add.
  2. simpanan git
Mykola
sumber
-6

Pindahkan sementara .gitignore ke .gitignore.bck

pengguna4551034
sumber