वास्तव में मौजूद फ़ाइल को हटाने में असमर्थ - घातक: 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

अपडेट करें: नेविक और बोरिस के जवाबों ने बहुत मदद की। मुझे एहसास हुआ कि मैं कई चीजों को लेकर भ्रमित था, जिनमें से कुछ को IntelliJ IDEA (एक उपकरण जिसे मैं आमतौर पर प्यार करता हूं, BTW) द्वारा विकसित किया गया था। सबसे पहले, git rm से 'घातक: pathspec' संदेश अनहेल्दी और भ्रामक (इस वेनिला उपयोगकर्ता की राय में) दोनों है। दूसरा, मेरे पास .gitignore में फ़ाइल थी, लेकिन मेरे सवाल पूछने से पहले इसे हटा दिया था। हालाँकि, इसे IDEA की इग्नीटेड फाइल्स फीचर में स्वतंत्र रूप से git के रूप में भी शामिल किया गया था, और इसे प्रोजेक्ट व्यूअर के रूप में दिखाया गया था (बजाय अनट्रैक के, जैसे git स्टेटस दिखाया गया था)। अंत में, जब मैं प्रयोग कर रहा था, तब मेरे पास आईडीईए चल रहा था, और ऐसा लगता है कि यह मेरे आरएम के तुरंत बाद फ़ाइल को फिर से बना रहा था। इसलिए, मेरा टेकअवे यह है कि अगर मुझे भ्रमित करने वाला व्यवहार हो रहा है, तो डीबग करना छोड़ दें और डिबगिंग के दौरान कमांड लाइन (और गिटक) में काम करना सुनिश्चित करें। और वो SO यूजर कमाल के हैं। एक बार फिर धन्यवाद!


15
क्या आपने rmइसके बजाय फ़ाइल को हटाने की कोशिश की है git rm?
नेविक रेहेल

1
@NevikRehnel हाँ, मैंने सोचा था कि कोशिश करने के लिए, धन्यवाद, लेकिन यह IntelliJ IDEA की तरह दिखता है (जो मैं चला रहा था) प्रत्येक विलोपन के बाद पुनर्जीवन। रवींद्र!
मैथ्यू कॉर्नेल

मैं एक्लिप्स और अटलेशियन सोर्सट्री के साथ काम कर रहा हूं ... आपका प्रश्न मुझे इस समस्या को हल करने में मदद करता है। धन्यवाद !
मनु

आप git clean -f .idea/workspace.xmlअनट्रैक फ़ाइल को निकालने के लिए उपयोग कर सकते हैं ।
केमटुरियन

जवाबों:


134

आपकी फ़ाइल .idea/workspace.xmlगिट संस्करण नियंत्रण में नहीं है। आपने इसे अभी तक जोड़ा नहीं है (git स्टेटस / अनट्रैक की गई फ़ाइलों की जाँच करें) या इसे अनदेखा कर दिया है (। .ignignore का उपयोग कर रहे हैं या .गित / जानकारी / फ़ाइलों को बाहर करें)।

आप निम्नलिखित git कमांड का उपयोग करके इसे सत्यापित कर सकते हैं, जो सभी उपेक्षित फ़ाइलों को सूचीबद्ध करता है:

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

इससे काफी मदद मिली, बोरिस। धन्यवाद! मैंने अपना प्रश्न उन चीजों को संक्षेप में अपडेट किया है जो (IDEA, आदि) चल रही थीं
मैथ्यू कॉर्नेल

23
$>git add .
$>git rm file_Name  

यह काम करता हैं। आप राइट क्लिक का उपयोग करके नई फ़ाइल जोड़ते हैं -> नई फ़ाइल बनाते हैं, और उसके तुरंत बाद उसे हटा देते हैं। फ़ाइल अनटैक की गई फ़ाइल सूची में चली जाएगी।


2
यदि फ़ाइल को हटाते समय यह आपको त्रुटि देता है, तो फ़ाइल को हटाते समय आप -f का उपयोग कुछ इस तरह कर सकते हैं: $> git rm -f file_Name
अभिनव

1
जब किसी को rmडायरेक्टरी या फाइल की जरूरत होती है, तो उसे git में जोड़ने की जरूरत नहीं है अगर यह पहले से ही git वर्जन कंट्रोल में लिस्टेड नहीं है।
मोहम्मद करमानी

8

मुझे पता है कि यह ओपी की समस्या नहीं है, लेकिन मैं पूरी तरह से अलग आधार के साथ एक ही त्रुटि में भाग गया था, इसलिए मैं बस इसे यहां छोड़ना चाहता था अगर किसी और के पास भी ऐसा हो। यह विंडोज-विशिष्ट है, और मुझे लगता है कि लिनक्स उपयोगकर्ताओं को प्रभावित नहीं करता है।

मेरे पास एक लिब्रे ऑफिस डॉक फाइल थी, इसे कॉल करें final report.odt। मैंने बाद में इसका केस बदल दिया Final Report.odt। विंडोज में, यह भी एक नाम नहीं गिना जाता है। 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"

फिर, कि यहाँ ओपी के लिए समस्या नहीं थी; लिनक्स उपयोगकर्ता को प्रभावित नहीं करेगा, क्योंकि उनकी पोस्ट से पता चलता है कि वह स्पष्ट रूप से है। मैं इसे दूसरों के लिए भी शामिल कर रहा हूँ, जिन्हें इस समस्या का सामना करना पड़ सकता है।


1
यह विंडोज पर हो सकता है यदि पथ का कोई भी हिस्सा उस स्थिति में अलग है जो गिट में दर्ज किया गया है। मैं Windows में एक bash खोल का उपयोग करके वैकल्पिक हल करने में सक्षम था
रैटल

3

यदि आपकी फ़ाइल idea/workspace.xml .gitignore (या इसके मूल फ़ोल्डर) में जोड़ी जाती है, तो addयह मैन्युअल रूप से संस्करण नियंत्रण को नियंत्रित करने के लिए है। इसके अलावा आप इसे TortoiseGit का उपयोग करके जोड़ सकते हैं। अगले धक्का के बाद आप देखेंगे, कि आपकी समस्या हल हो गई है।

TortoiseGit का उपयोग करके git संस्करण में जोड़ें


1
जब किसी को rmनिर्देशिका या फ़ाइल की आवश्यकता होती है, तो उसे git में जोड़ने की आवश्यकता नहीं है यदि यह पहले से ही git संस्करण नियंत्रण में सूचीबद्ध नहीं है!
मोहम्मद करमानी

0

मेरे उदाहरण में, कुछ पूरी तरह से अजीब था कि मुझे यकीन नहीं है कि इसका कारण क्या था। एक संपूर्ण फ़ोल्डर पहले से प्रतिबद्ध था। मैं इसे Git, Windows Explorer, और GitHub में देख सकता था, लेकिन मैंने फ़ोल्डर में स्वयं और उसमें मौजूद किसी भी परिवर्तन को अनदेखा कर दिया था। का उपयोग करते हुए git check-ignoreक्या यह अनदेखी गया था, और दूर करने के लिए इसे का उपयोग का प्रयास करने को देखने के लिए git rm --cachedकोई प्रभाव नहीं पड़ा। परिवर्तनों का मंचन करने में सक्षम नहीं थे।

मैंने इसे ठीक किया:

  1. किसी अन्य स्थान पर फ़ोल्डर और फ़ाइलों की प्रतिलिपि बनाना।
  2. मैंने उस मूल को हटा दिया जिसे किसी भी तरह से अनदेखा किया जा रहा था।
  3. इस अपडेट को कमिट करें और पुश करें।
  4. अंत में, मैंने फ़ाइलों और फ़ोल्डर को वापस जोड़ दिया और git इसे फिर से अपेक्षित रूप में देख रहा था और प्रतिक्रिया दे रहा था।
  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. जीआईटी की मार

-6

अस्थायी रूप से ले जाएँ। .ignignore से .gitignore.bck पर जाएँ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.