फ़ाइल के अनलिंक विफल। क्या मुझे फिर से कोशिश करनी चाहिए?


571

मेरे स्थानीय गिट रिपॉजिटरी में एक फाइल के साथ कुछ गलत हो रहा है। जब मैं शाखा को बदलने की कोशिश कर रहा हूँ तो यह कहता है:

Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)

इसका क्या मतलब हो सकता है?


1
की जाँच करें इस सवाल
RDL

[गिट रिबेस को संभव नकल मिली 'फ़ाइल का लिंक हटना विफल' त्रुटि] ( stackoverflow.com/questions/3698369/… )
जोश ली

क्या आपके लिए दिया गया उत्तर उत्तर काम करता है, यदि प्रक्रिया दर्शक काम नहीं कर रहा है, तो पुनः आरंभ करें और फिर आप फ़ाइल को हटा सकते हैं, साथ ही आप उत्तर को स्वीकार कर सकते हैं यदि यह आपके लिए काम करता है
dhaval

1
यह भी जाँच लें कि git प्रक्रिया में उस फ़ाइल पर लिखने की अनुमति है।
बोइल्यू

जवाबों:


751

इसका मतलब यह हो सकता है कि एक अन्य प्रोग्राम फ़ाइल का उपयोग कर रहा है, जो कि आप को शाखाओं को बदलने का प्रयास करते समय फ़ाइल को कार्यशील निर्देशिका में "बाहर" जाने से रोक रहा है।

मैंने विंडोज विस्टा पर ऐसा किया है जहां ग्रहण फ़ाइल का उपयोग करने का कार्यक्रम है। फ़ाइल वास्तव में ग्रहण में खुली नहीं हो सकती है, लेकिन ग्रहण द्वारा संचालित एक प्रक्रिया द्वारा खोली जा सकती है।

इस घटना में, फ़ाइल का उपयोग करने वाले किसी भी एप्लिकेशन में बंद करने का प्रयास करें। यदि वह काम नहीं करता है, तो पूरी तरह से किसी भी एप्लिकेशन से बाहर निकलें जो फ़ाइल को खोल सकता है।


53
विंडोज पर, ProcessExplorer का उपयोग करके यह पता लगाएं कि किस प्रक्रिया में फ़ाइल खुली है।
डेव सी

2
क्या कोई स्क्रिप्ट लिखने का कोई तरीका है जैसे "यदि यह फ़ाइल नहीं हटाई जा सकती (जैसे फ़ाइल अभी मौजूद नहीं है), बस फ़ाइल को छोड़ दें"।
2xMax

14
मेरे मामले में वह Visual Studio और उसका Git plugin था।
मिशाल पोवागा

8
Windows पर, यदि आपके पास ProcessExplorer उपलब्ध नहीं है या इसे डाउनलोड नहीं करना चाहते हैं, तो आप (Windows + R) "resmon" चला सकते हैं, CPU टैब पर जाएँ और "एसोसिएटेड आइडेंटिफ़ायर" टेक्स्टबॉक्स में फ़ाइल का नाम खोजें।
राफेल

6
यदि आप उपयोग करते हैं, GitKrakenतो आप इसे प्राप्त कर सकते हैं यदि आप एक रिबेस जैसा कमांड करते हैं
mtpultz

285

मेरे पास यह मुद्दा था और इसे कमांड द्वारा हल किया गया था: git gc उपरोक्त आदेश अस्थायी और अनावश्यक फ़ाइलों को हटा दें। (कचरा इकट्ठा करने वाला।)


43
git pullgit gcस्वचालित रूप से शुरू की गई , और gc ने कुछ .PG और .inx फ़ाइलों तक पहुँचने का प्रयास किया। ये "विंडोज़ गिट" प्रक्रिया द्वारा धारण किए गए थे, जो स्वामित्व वाली git pullकमान थी। git gcमैन्युअल रूप से चल रहा है और git pullइस मुद्दे को वास्तव में हल करता है।
निकिता

4
दौड़ते समय git gcमुझे फिर से वही त्रुटि मिली जब gcप्रगति में था
प्रकाश के

4
"Git gc मैन्युअल रूप से और से - git खींचना वास्तव में समस्या को हल करता है।" इससे मदद मिली। धन्यवाद निकिता।
संगम

इससे मुझे भी मदद मिली। इस पर विंडोज पर
गित

गिट पुल शुरू करने के बाद मुझे यह त्रुटि मिली। मैं CTRL + C दबाया पुल को रोकने के लिए, फिर से Git जीसी और फिर Git पुल चलाने के लिए, समस्या गायब हो चुका था और कुछ भी नहीं खींच दखल से टूट गया था।
डैनियल सपा

84

यहाँ से इस समाधान ने मेरे लिए काम किया:

यह एक विंडोज विशिष्ट उत्तर है, इसलिए मुझे पता है कि यह आपके लिए प्रासंगिक नहीं है ... मैं भविष्य के खोजकर्ताओं के लाभ के लिए इसे शामिल कर रहा हूं।

मेरे मामले में, यह इसलिए था क्योंकि मैं गैर-एलिवेटेड कमांड लाइन से गिट चला रहा था। "व्यवस्थापक के रूप में चलाएं" मेरे लिए इसे तय किया।


2
मेरे लिए काम किया। व्यवस्थापक के रूप में रैन वीएस और फिर
सेंटिनल

3
I: Ctrl+Cअकल्पनीय फ़ाइलों की बहुत लंबी सूची को समाप्त करने के लिए टाइप किया गया; gitbash, मेरी IDE और GitHub विंडोज एप्लिकेशन से बाहर निकले; उन्नत "प्रशासक के रूप में चलाएं" मोड में gitbash को पुनरारंभ करें; और भाग गया git gc --aggressive। पूरा करने में थोड़ा समय लिया, लेकिन बिना किसी त्रुटि के इसे बनाया।
मार्क

यदि आपको लगता है कि यह एक डुप्लिकेट है, तो आपको इसे इस तरह से ध्वजांकित करना चाहिए, ऐसा उत्तर न जोड़ें जो किसी अन्य उत्तर की ओर
Liam

2
@ लिआम यह सवाल पुराना है, लेकिन यह जवाब केवल दूसरे सवाल पर था, और इस सवाल का केवल एक ही जवाब नहीं है, जो केवल एक डुप्लिकेट के रूप में सेट करना कठिन बनाता है।
sepehr

यह मेरे लिए बहुत अच्छा काम किया। पिछले उत्तर में से कोई भी नहीं किया। बहुत बहुत धन्यवाद।
रॉबर्टो रोड्रिग्ज

35

मैं इस मुद्दे का सामना करते हुए एक git pull

मैंने कोशिश की git gcऔर इसने मेरी समस्या हल कर दी।


मैं विंडोज मशीन पर इस मुद्दे में भाग गया और यह समाधान शुरू में काम नहीं आया। हालांकि एक बार मैं एक व्यवस्थापक आदेश से इस आदेश को दौड़ा शीघ्र यह मेरी समस्या का समाधान किया।
विलियम डब्ल्यू

23

मेरे मामले में कोई फ़ाइल या निर्देशिका को छू प्रक्रियाओं कर रहे हैं। शायद यह तब होता है जब पथ बहुत लंबा होता है, क्योंकि एक ऑपरेटिंग सिस्टम प्रतिबंध (विंडोज़)। वैश्विक गिट कॉन्फ़िगरेशन में लॉन्गपैथ समर्थन ध्वज को सक्षम करने का प्रयास करें जैसा कि नीचे दिखाया गया है:

git config --global core.longpaths true

या हां / कोई उत्तर ध्वज स्थापित करने का प्रयास करें यदि यह आपके लिए संघर्षपूर्ण नहीं है

set GIT_ASK_YESNO=false

यदि रास्ता बहुत लंबा है, तो मुझे एक सफल समाधान नहीं मिला है।


5
मुझे नहीं पता, लेकिन "git config --global core.longpaths true" सेट करना मेरे लिए मददगार था।
मैक्सिम

GIT_ASK_YESNO, इस बारे में जानकारी नहीं मिल सकती है। यह कहां से आता है ?
मेजकिनटोर

देखें: stackoverflow.com/questions/3698369/... उदाहरण के लिए; मैं अब नहीं अगर यह git (2.9) के संस्करणों के साथ काम करता है
andhdo

core.longpathsअतिरिक्त के साथ: रीसेट -हार्ड prune gc ने मेरे लिए काम किया - लेकिन इसके निर्माण में गड़बड़ी न करने के लिए AndroidStudio को बंद करना पड़ा
माइक bovquier


10

यह किसी के लिए उपयोगी हो सकता है; यदि उपरोक्त सभी आपके लिए काम नहीं करते हैं, तो इन चरणों का पालन करें:

  1. अपनी आईडीई को बंद करें (मेरा ग्रहण था, यह सुनिश्चित नहीं है कि यह इंटेलीज और अन्य पर लागू होता है) या कोई अन्य ऐप जो आईआईटी का उपयोग कर रहा है।

  2. कमांड लाइन से खुला गिट (मेरे मामले में मेरे पास बैश था) और git gcदूसरों द्वारा बताए अनुसार चलाएं ।

इसने मेरे लिए जादू कर दिया।


यह एकमात्र उत्तर है जिसने मेरे मामले में मदद की, एंड्रॉइड स्टूडियो
0101100101

10

जैसा कि मैं gitkraken और कमांड प्रॉम्प्ट का उपयोग कर रहा हूं , मैं उसी मुद्दे में भाग गया। और फिर मैं git gcकमांड चलाने के लिए यह मेरी समस्या का समाधान किया। इसलिए मैं खुश हूं और कुछ ऐसे बिंदु साझा करना चाहता हूं जो मददगार हो सकते हैं।

क्या git gcकरेगा?

git gc अगम्य वस्तुओं को हटाने से जो git add के पूर्व चालानों से बनाई गई हो सकती है।

कब चलाना है git gc?

से डॉक , उपयोगकर्ताओं को एक भंडार के भीतर एक नियमित आधार पर इस कार्य को चलाने के लिए अच्छा डिस्क स्थान उपयोग और अच्छा ऑपरेटिंग प्रदर्शन को बनाए रखने के लिए प्रोत्साहित किया जाता है।

इसे ऑटो-कंफर्टेबल कैसे बनाएं?

कुछ git कमांड स्वचालित रूप से git gc चला सकते हैं; विवरण के लिए नीचे -आटो ध्वज देखें। यदि आप जानते हैं कि आप क्या कर रहे हैं और आप जो चाहते हैं, वह इस व्यवहार को स्थायी रूप से बिना अधिक विचार के अक्षम करना है, तो बस करें

git config --global gc.auto 0

8

मेरे मामले में (Win8.1, TortoiseGit चल रहा है), यह "TortoiseSVN स्टेटस कैश" नामक प्रक्रिया थी जो फ़ाइल को लॉक कर रही थी।

इसे मारने से मुझे बिना किसी और समस्या के "git gc" चलाने की अनुमति मिली। उपरोक्त प्रक्रिया को टोर्टोइसगिट द्वारा निकाल दिया गया है, इसलिए इसे मैन्युअल रूप से पुनरारंभ करने की कोई आवश्यकता नहीं है।


7

मेरे पास विंडोज 7 पर इस तरह का मुद्दा था और यह किसी अनाथ git.exeप्रक्रिया के कारण निकला ।

इसे हल करने के लिए, कार्य प्रबंधक खोलें और सभी git.exeप्रक्रियाओं को मार डालें ।

चूंकि gitकमांड अल्पकालिक हैं, आपको आमतौर git.exeपर टास्क मैनेजर में कभी नहीं देखना चाहिए । जब वे वहां होते हैं, तो इसका मतलब आमतौर पर कुछ गलत होता है, और आपको उन प्रक्रियाओं को मारना चाहिए।


7

मुझे विंडोज में यह समस्या आई। मैंने अपना आईडीई (एंड्रॉइड स्टूडियो) बंद कर दिया और जीईएस शेल में हां का चयन किया। इसने काम कर दिया।


5

विंडोज 8 पर: मैंने git gc चलाया और यह कहा कि git gc पहले से ही चल रहा था, मैंने git gc --force चलाया और कूड़ा उठाने वाला भाग गया।

मैं तब शाखाओं को बदल सकता था और बिना किसी मुद्दे के विलय कर सकता था, git gc --force की कोशिश कर सकता था।

शायद gc प्रक्रिया एक कारण या किसी अन्य के लिए इनायत से नहीं रुकी।


यह भी विंडोज 10 के लिए मान्य है
Oguzhan

4

मैं फ़ोल्डर .tmpमें फ़ाइलों के साथ इस समस्या थी /.git/objects/pack। मुझे लगता है कि एक धक्का या खींचने के दौरान कुछ विफल हो गया था, इसलिए मैंने इन अस्थायी फ़ाइलों को हटा दिया और एचईएडी को अपनी अंतिम प्रतिबद्धता पर रीसेट कर दिया। यकीन नहीं होता अगर यह सलाह दी जाती है लेकिन यह मेरे लिए काम करती है। इसके अलावा git count-objects -vमुझे की एक सूची दे दी .tmpगई फ़ाइलों पैक फ़ोल्डर में संबंधित नहीं थे।

या विंडोज़ git open cmd.exeऔर रन में y / n संदेशों को दबाने के लिए :

SETX GIT_ASK_YESNO false

यहाँ देखा गया: https://twitter.com/petercamfield/status/494805475733807104


रन होने के बाद git gc, फ़ोल्डर git count-objects -vमें बचे हुए अस्थायी ऑब्जेक्ट को पहचानने में मदद करता है pack
मिस्टेको

4

मैं प्रशासक के रूप में और वहां से Powershell को खोलकर इसे हल करने में सक्षम थाgit checkout <branch_name>


धन्यवाद @ बार-हॉरिंग। इसने मुझे इसे एक अनुमति मुद्दे के रूप में पहचानने में मदद की। एक बार जब मैंने उस फ़ोल्डर के लिए विंडोज़ की अनुमति तय कर दी तो यह काम कर गया।
कुमार

3

Pull गिट पुल ’करते समय मुझे उसी मुद्दे का सामना करना पड़ा। मैंने मैनुअल हाउसकीपिंग git कमांड 'git gc' की कोशिश की और इसने मेरी समस्या हल कर दी।


4
हालांकि यह है एक जवाब पर एक प्रयास है, यह कुछ भी है कि पहले से ही (जैसे अन्य उत्तर द्वारा कवर नहीं नहीं जोड़ता है इस एक )। यदि आप यह पुष्टि करने की कोशिश कर रहे हैं कि यह समाधान काम करता है, या उस उत्तर के लेखक को धन्यवाद देना चाहता है, तो कृपया ऐसा करने के लिए उत्तर पोस्ट न करें। कुछ और प्रतिष्ठा हासिल करने के बाद , आप अपने पसंद के उत्तर को उभारने के लिए पर्याप्त विशेषाधिकार प्राप्त करेंगे , जो आपको धन्यवाद कहने का स्टैक ओवरफ्लो तरीका है।
स्कॉट वेल्डन


2

विभिन्न समाधानों की कोशिश करने के बाद आखिरकार git clean -fमेरी मदद की।

संपादित करें: मैंने समस्या को कुछ बार फिर से मारा - git पर निर्भर सभी प्रक्रियाओं को बंद करने से मदद मिलती है (जैसे gitbash, ग्रहण आईडीई, आदि)।


2

जैसा कि ऊपर कहा गया है, कुछ और फाइलों को पकड़े हुए है। बात यह है कि कार्यक्रम हमारे लिए संदिग्ध नहीं दिखता है। मैं सांत्वना से एक गिट पुल करने की कोशिश कर रहा था, जबकि GitKraken खोला गया था। GitKraken को बंद करने से समस्या ठीक हो गई।


2

रन कमांड के बाद

git rm -rf foo.bar

मैं त्रुटि देखता हूं

Unlink of file 'foo.bar' failed. Should I try again? (y/n)

क्योंकि एक अन्य प्रोग्राम इस फाइल का उपयोग कर रहा है । उदाहरण के लिए, जब मैं जावा वेब एप्लिकेशन को डिबग मॉडल में चलाता हूं या सर्वर पर वेब एप्लिकेशन चलाता हूं, तो मैं लॉग फाइल को हटा नहीं सकता। एप्लिकेशन को गंभीर रूप से बंद करें (या डिबग प्रक्रिया को बंद करें), पुनः प्रयास करें

git rm -rf foo.bar

मुझे लगता है कि फ़ाइल हटा दी गई है।


1

यह एक अलग gitk विंडो हो सकती है जो कुछ git इतिहास देखने के लिए चल रही है।

उस समस्या को ठीक करने के लिए बस उस विंडो को बंद करें।


1

मैं एक ही समय में बैश और एक्लिप्स ईजीट को चलाने वाले इस मुद्दे में भाग गया। समाधान: करीब ग्रहण। git gc@Khilo के रूप में भी चलाने के लिए चोट नहीं होगा ।



1

मैं विंडोज में इस मुद्दे पर भाग गया, आप एक व्यवस्थापक के रूप में गिट बश को चलाना चाहते हैं और फिर इच्छा आज्ञाओं को पूरा कर सकते हैं, जिससे मेरे लिए समस्या हल हो गई।


1

यदि आप वेब एप्लिकेशन विकसित कर रहे हैं, तो सर्वर बंद करने का एक सामान्य कारण है। उदाहरण के लिए यह एक सरल Node.js प्रक्रिया हो सकती है, या विंडोज़ पर आपकी IIS प्रक्रिया पृष्ठभूमि प्रक्रिया के रूप में अधिक विनीत चल रही है।


1

मैंने इस पृष्ठ पर हर एक टिप की कोशिश की और कुछ भी मदद नहीं की। मैं एक कर रहा था git fetchऔर git reset --hard origin/developmentमुझे अनकंक त्रुटि दी। मैं नवीनतम प्रतिबद्ध के लिए रीसेट नहीं कर सका।

क्या मदद मिली एक और शाखा की जाँच करने और फिर पिछली शाखा की जाँच करने में। बहुत अजीब है लेकिन इसने समस्या को हल कर दिया।


1

यदि आपकी IDE को बंद करने और यहां सूचीबद्ध विभिन्न git कमांड चलाने में मदद नहीं मिलेगी, तो सभी चल रहे जावा प्रक्रियाओं को मैन्युअल रूप से मारने का प्रयास करें। मेरे पास एक जावा प्रक्रिया थी जो संभवत: ग्रहण से बची थी जो किसी भी तरह से एक कॉन्फ़िगरेशन फ़ाइल को खुला रखती थी।


1

यदि आप डॉकर का उपयोग कर रहे हैं और विंडोज 10 चला रहे हैं, तो आप उस कंटेनर को रोकना चाहते हैं जहां फ़ाइल चल रही हो। अपने कंटेनरों की स्थिति दिखाने के लिए, दौड़ें

docker ps -a

उन्हें रोकने के लिए, बस चलाएं

docker stop <container name or container id>

मेरे लिए यह काम किया क्योंकि मैं एक .sh फ़ाइल का उपयोग करके अपनी स्थानीय फ़ाइलों को चला रहा हूं


1

मेरे लिए काम किया, खिड़कियों पर कोशिश की:

अपने सर्वर को IDE से चलाना बंद करें या अपनी IDE को बंद करें

Intellij / Ecllipse या कोई भी, यह काम करेगा।


0

विंडोज पर, git cloneएक (काफी बड़े) रेपो पर इस त्रुटि को देखा । स्मार्टगिट को बंद कर दिया और मेरे बैकअप सॉफ़्टवेयर ( क्रैशप्लान) को रोक दिया, और उसके बाद यह काम किया। यकीन नहीं है कि 2 में से किसने किया है, लेकिन अगर या तो चल रहा है, तो यह आपके लिए भी कर सकता है।


0

मैं एक ही मुद्दा था जब एक git पुल कर रहा था और जैसा कि ऊपर कहा गया है, यह एक प्रोग्राम के कारण था जो उन फाइलों को पकड़ रहा था और एक git पुल की अनुमति नहीं दे रहा था। कार्यक्रम को बंद करने से मदद मिली। आमतौर पर, आईडीई (जैसे कि ग्रहण) जहां से फाइलों की जांच की जा रही है, पृष्ठभूमि में रखी जाएगी। वही और फिर से चलने वाली गिट पुल को बंद करने से मेरे लिए समस्या हल हो गई।


0

मेरे पास यह त्रुटि थी और उस ऐप को बंद करना जिसकी फ़ाइल खुली थी, उसे हल कर दिया। मैं वापस जाने और "Y" दबाने में सक्षम था

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