ไม่สามารถลบไฟล์ที่มีอยู่จริง - ร้ายแรง: pathspec ... ไม่ตรงกับไฟล์ใด ๆ


165

ไม่สามารถลบไฟล์ที่มีอยู่จริง - ร้ายแรง: pathspec ... ไม่ตรงกับไฟล์ใด ๆ

ฉันมีไฟล์ภายใต้การควบคุมคอมไพล์ที่จะไม่ถูกลบ คำสั่งที่ล้มเหลวคือ:

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

ด้านล่างฉันแสดงรายการสารบบสาขา ฯลฯ จนถึงตอนนี้ฉันได้ลอง rm จากภายในไดเรกทอรีและหลบหนีในกรณีที่มีตัวละครตลกและฉันก็นิ่งงันจริงๆ ฉันค้นหาเว็บและอื่น ๆ แต่ไม่พบสิ่งนี้โดยเฉพาะ ขอบคุณล่วงหน้า!

$ 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: คำตอบจาก Nevik และ Boris ช่วยได้มาก ฉันรู้ว่าฉันรู้สึกสับสนกับสิ่งต่าง ๆ ที่เกิดขึ้นซึ่งบางส่วนถูกทำให้รุนแรงโดย IntelliJ IDEA (เครื่องมือที่ฉันรักโดยทั่วไปคือ BTW) อันดับแรกข้อความ 'fatal: pathspec' จาก git rm นั้นทั้งไม่ช่วยเหลือและทำให้เข้าใจผิด (ในความเห็นของผู้ใช้วานิลลา) ประการที่สองฉันมีไฟล์เป็น. gignignore แต่ลบมันออกก่อนถามคำถามของฉัน อย่างไรก็ตามมันยังรวมอยู่ในฟีเจอร์ละเว้นไฟล์ของ IDEA โดยไม่ขึ้นกับคอมไพล์และแสดงเช่นนี้ในตัวแสดงโปรเจ็กต์ (แทนที่จะไม่ถูกติดตามตามที่แสดงสถานะ git) ในที่สุดฉันก็มี IDEA ที่ทำงานอยู่ในขณะที่ฉันกำลังทดลองและดูเหมือนว่ามันจะสร้างไฟล์ขึ้นมาใหม่หลังจาก rm ของฉัน ดังนั้นของฉันคือว่าถ้าฉันเริ่มสับสนกับพฤติกรรมของ Git ให้แน่ใจว่าได้ออกจาก IDEA และทำงานในบรรทัดคำสั่ง (และ gitk) ในขณะที่การดีบั๊ก และผู้ใช้ SO นั้นยอดเยี่ยม ขอบคุณอีกครั้ง!


15
คุณลองลบไฟล์ด้วยrmแทนที่จะเป็นgit rmหรือไม่?
Nevik Rehnel

1
@NevikRehnel ใช่ฉันคิดว่าจะลองแล้วขอบคุณ แต่ดูเหมือน IntelliJ IDEA (ที่ฉันเคยใช้งาน) ฟื้นคืนชีพหลังจากการลบแต่ละครั้ง Doh!
Matthew Cornell

ฉันกำลังทำงานกับ Eclipse และ Attlassian SourceTree ... คำถามของคุณช่วยฉันแก้ปัญหานี้ ขอบคุณมาก!
มนู

คุณสามารถใช้git clean -f .idea/workspace.xmlเพื่อลบไฟล์ที่ไม่ได้ติดตาม
chemturion

คำตอบ:


134

ไฟล์ของคุณ.idea/workspace.xmlไม่ได้อยู่ภายใต้การควบคุมเวอร์ชันคอมไพล์ คุณยังไม่ได้เพิ่ม (ตรวจสอบสถานะ git / ไฟล์ที่ไม่ได้ติดตาม) หรือเพิกเฉย (ใช้ไฟล์. gitignore หรือ. git / info / ไม่รวมไฟล์)

คุณสามารถตรวจสอบได้โดยใช้คำสั่ง 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
Mohammad Kermani

8

ฉันรู้ว่านี่ไม่ใช่ปัญหาของ OP แต่ฉันพบข้อผิดพลาดเดียวกันกับพื้นฐานที่แตกต่างกันโดยสิ้นเชิงดังนั้นฉันจึงอยากจะวางมันไว้ที่นี่ในกรณีที่คนอื่นมีเหมือนกัน นี่เป็น Windows เฉพาะและฉันถือว่าไม่มีผลต่อผู้ใช้ Linux

ผมมีไฟล์ LibreOffice doc final report.odtเรียกว่า Final Report.odtผมมารู้ทีหลังเปลี่ยนกรณีของตนไป ใน Windows สิ่งนี้ไม่ได้นับเป็นการเปลี่ยนชื่อ final report.odt, Final Report.odt, FiNaL RePoRt.oDtมีทั้งหมดเดียวกัน ใน Linux สิ่งเหล่านี้ล้วนแตกต่างกัน

ในที่สุดเมื่อฉันไป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 และสะดุดกับคำถามนี้


1
สิ่งนี้สามารถเกิดขึ้นได้บน Windows หากส่วนใดส่วนหนึ่งของพา ธ แตกต่างกันในกรณีที่สิ่งที่บันทึกไว้ในคอมไพล์ ฉันสามารถแก้ปัญหาโดยใช้ bash shell ใน Windows
Rattle

3

หากไฟล์ของคุณidea/workspace.xml ถูกเพิ่มลงใน. gitignore (หรือโฟลเดอร์พาเรนต์) เพียงแค่addมันด้วยตนเองเพื่อควบคุมเวอร์ชัน git นอกจากนี้คุณสามารถเพิ่มได้โดยใช้ TortoiseGit หลังจากกดครั้งต่อไปคุณจะเห็นว่าปัญหาของคุณได้รับการแก้ไขแล้ว

เพิ่มไปยังการกำหนดเวอร์ชัน git โดยใช้ TortoiseGit


1
เมื่อมีคนต้องการrmไดเรกทอรีหรือไฟล์เขา / เธอไม่จำเป็นต้องเพิ่มมันเข้าไปในคอมไพล์ถ้ามันไม่ได้อยู่ในรายการภายใต้การควบคุมเวอร์ชัน git!
Mohammad Kermani

0

ในตัวอย่างของฉันมีบางสิ่งที่แปลกอย่างสมบูรณ์ที่ฉันไม่แน่ใจว่าสาเหตุคืออะไร โฟลเดอร์ทั้งหมดถูกส่งก่อนหน้านี้ ฉันสามารถดูได้ใน Git, Windows Explorer และ GitHub แต่การเปลี่ยนแปลงใด ๆ ที่ฉันทำกับตัวโฟลเดอร์เองและไฟล์ที่อยู่ในนั้นถูกเพิกเฉย การใช้git check-ignoreเพื่อดูสิ่งที่ไม่สนใจและการพยายามลบออกโดยใช้git rm --cachedไม่มีผลกระทบ การเปลี่ยนแปลงไม่สามารถจัดแสดงได้

ฉันแก้ไขมันโดย:

  1. ทำสำเนาของโฟลเดอร์และไฟล์ในตำแหน่งอื่น
  2. ฉันลบต้นฉบับที่ไม่สนใจอย่างใด
  3. ยอมรับและผลักดันการอัปเดตนี้
  4. ในที่สุดฉันเพิ่มไฟล์และโฟลเดอร์กลับมาและคอมไพล์ก็เห็นและตอบสนองต่อมันตามที่คาดไว้อีกครั้ง
  5. ขึ้นเวทีและทำสิ่งนี้และคุณก็พร้อมที่จะไป! :)

0

ส่วนตัวฉันสะดุดกับข้อผิดพลาดที่คล้ายกันในสถานการณ์นี้:

ฉันสร้างโฟลเดอร์ที่ว่างเปล่าโดยธรรมชาติตราบใดที่มันว่างเปล่าการพิมพ์git add *จะไม่นำโฟลเดอร์ว่างนี้มาพิจารณา ดังนั้นเมื่อฉันพยายามเรียกใช้git rm -r *หรือคอมไพล์rm my_empty_folder/ -r,ฉันได้รับข้อความแสดงข้อผิดพลาด

วิธีแก้ไขคือเพียงลบออกโดยไม่ต้องคอมไพล์rm -r my_empty_folder/ หรือสร้างไฟล์ข้อมูลภายในโฟลเดอร์นี้จากนั้นเพิ่ม ( git add my_no_long_empty_folder)


0

ขั้นตอนดังกล่าวช่วยให้ฉัน:

  1. คอมไพล์เพิ่ม
  2. คอมไพล์สะสม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.