Git Checkout चेतावनी: फ़ाइलों को अनलिंक करने में असमर्थ, अनुमति अस्वीकृत


109

मुझे पता है कि 'अनलिंक करने में असमर्थ' चेतावनी से संबंधित समान मुद्दे हैं, लेकिन मैं उनका उपयोग नहीं कर पाया हूं।

मुख्य अंतर यह है कि यह तब हुआ है जब मैं किसी भी तरह से सबमॉड्यूल्स के साथ काम नहीं कर रहा हूं (मैंने पहले कभी उनसे निपटा नहीं है)। मैंने 'अपग्रेड' नामक एक शाखा बनाई, अपनी पुरानी फ्रेमवर्क फाइलें हटा दीं, और नए में कॉपी की गईं। मैंने git ऐड-ए का इस्तेमाल किया, फिर सबकुछ किया। जब मैंने ट्रंक शाखा की जांच करने की कोशिश की, तो उसने निम्नलिखित त्रुटियों के साथ जवाब दिया:

warning: unable to unlink requirements/views/sk/index.php: Permission denied
warning: unable to unlink requirements/views/sv/index.php: Permission denied
warning: unable to unlink requirements/views/zh/index.php: Permission denied
warning: unable to unlink requirements/views/zh_cn/index.php: Permission denied
warning: unable to unlink requirements/views/zh_tw/index.php: Permission denied

...आदि। इनकी संख्या सैकड़ों में है।

पहले तो मुझे लगा कि यह केवल एक अनुमतियों की समस्या है, और इसलिए मैंने समूह को पूरी आवश्यकताओं की निर्देशिकाओं को पुनरावर्ती रूप से लिखने की अनुमति दी, लेकिन कोई बदलाव नहीं हुआ।

संपादित करें: जैसा कि नीचे दिए गए उत्तर में सुझाया गया है, मैंने वही काम करने का प्रयास किया लेकिन बाकी सब कुछ बंद हो गया। मेरी पहले से ज्यादा किस्मत नहीं थी।

यह समस्या विशेष रूप से दुर्बल है क्योंकि मैं सामान्य विकास में वापस आने के लिए ट्रंक में नहीं जा सकता।



9
मैंने इसे एक सरलsudo chown -R username directory
स्टीफन कोर्विन

जवाबों:


84

मैं आमतौर पर उस तरह की त्रुटि को देखता हूं जब उन फ़ाइलों के हैंडल को जारी नहीं करने वाली एक प्रक्रिया होती है।

सुनिश्चित करें कि कुछ भी नहीं चल रहा है, और फिर अपने चेकआउट को फिर से आज़माएं।

नोट: यह उस तरह से भी संबंधित हो सकता है जिस तरह से गिट स्थापित किया गया है (विंडोज पर, यूएसी समस्या उत्पन्न कर सकता है यदि msysgit में स्थापित किया गया है C:\Programया C:\Program Files, " msysgit - sh.exe - कांटा देखें: अनुमति से इनकार किया - विस्टा 64 बिट " और टिप्पणी 2 अंक 437 )

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


1
मैं उबंटू पर हूं, यह स्पष्ट करने के लिए। और दुर्भाग्य से मैं केवल इस वेब ब्राउज़र और मेरे कंसोल में हूं, जिसमें एक टैब प्रासंगिक निर्देशिका के लिए खुला है (और दो अन्य जगहों पर खुला है)।
पैरागॉन

3
@ चित्र: यूनिक्स पर भी, आप मुद्दों को संभाल सकते हैं। अन्यथा, यह किसी प्रकार का अनुमति मुद्दा होना चाहिए। आपको चेकआउट के लिए बाध्य करने में सक्षम होना चाहिए। git checkout -f master
VonC

2
मेरे मामले में +1 यह एक सक्रिय वीएम के साथ फ़ोल्डर साझा करने वाला था जिसने होस्ट सिस्टम पर गिट में फाइलों को छोड़ने पर रोक लगा दी थी। मुझे पागल कर दिया, तो संकेत के लिए धन्यवाद!
जुके

1
वही मुद्दा। रनिंग प्रोसेस एक्सप्लोरर> Ctrl + F> <filename> - प्रक्रिया प्रदर्शित करेगा, जो इस फाइल को खोले रखता है।
सेटवॉय

1
GitExtensions ने सभी को लाने का प्रयास करते समय इस त्रुटि को प्रदर्शित किया ... मेरे पास GitKraken खुला था। एक बार जब मैंने GitKraken को बंद कर दिया तो सभी ने बिना किसी त्रुटि के काम किया।
mkaj

99

इस त्रुटि के साथ मेरी पहली मुठभेड़ में मेरे उपयोगकर्ता को फ़ाइल को "लिखने" का अधिकार था, लेकिन इसमें निर्देशिका नहीं थी। फ़ाइल युक्त निर्देशिका की अनुमतियों की जाँच करें।


95
ओह, बहुत मजाकिया, मैं आज ही इस जवाब पर आया था और तब मुझे एहसास हुआ कि यह मेरा अपना था! बहरहाल, यह फिर से काम किया!
एलिजा लिन

ठीक है, यह मुझे विंडोज़ 10 पर खुशी देता है, मैं मुख्य परियोजना फ़ोल्डर में जाता हूं। और सभी अनुमतियों, सभी अनुमतियों के लिए जोड़ें। तो सिस्टम, व्यवस्थापक, उपयोगकर्ताओं, सभी संभावनाओं के लिए। Chnages लागू करें। और यह काम करने लगता है, किसी तरह शायद विंडोज़ 10 अपडेट के साथ, भले ही हम नया उपयोगकर्ता नहीं बनाते हैं, हमें बिना अनुमति के नए की तरह धमकी दी जाती है। उदाहरण के लिए मेरे पास कुछ wird नाम S-1-15-32 है ..... लॉगिन नाम नहीं है जो मेरे पास है जब हम अपना लैपटॉप अनलॉक करते हैं।
PsychedelicSubstance

30

"अनलिंक" का अर्थ अनिवार्य रूप से इस मामले में "फ़ाइल हटाना" है।

यह त्रुटि स्वयं गिट के कारण नहीं है। आपको कमांड लाइन या फाइल एक्सप्लोरर में उन फाइलों को मैन्युअल रूप से हटाने के लिए समान त्रुटियां होनी चाहिए।


18
इस त्रुटि के साथ मेरी पहली मुठभेड़ में मेरे उपयोगकर्ता के पास फ़ाइल को "लिखने" का अधिकार था, लेकिन इसमें मौजूद निर्देशिका नहीं थी।
एलिजा लिन

3
@ एलिजा: धन्यवाद! यही मेरे लिए था।
जेसी ली

4
मेरे मामले में मैंने पाया कि प्रश्न में फ़ाइल किसी अन्य एप्लिकेशन द्वारा लॉक की गई थी। एप्लिकेशन को बंद करने से फ़ाइल मुक्त हो गई और चेकआउट को आगे बढ़ने दिया।
साइमन टिव्सी

25

आपके पास पहुंच की अनुमति नहीं है, हो सकता है कि आप स्वामी नहीं हैं।

अपने आप को स्वामी को बदलकर ठीक करें:

sudo chown -R your_login_name /path/to/folder

2
मेरे स्थानीय विकास मशीन पर, प्रश्न की फाइलें मूल रूप से मेरे स्थानीय अपाचे सर्वर द्वारा बनाई गई थीं, इसलिए www-data उपयोगकर्ता के स्वामित्व में थीं। एक बार जब मैं उन्हें अपने खाते में चुन लेता, तो सब कुछ सामान्य रूप से फिर से काम करता। "अनुमति अस्वीकृत" वास्तविक मुद्दा था। "अनचाहे में असमर्थ" सिर्फ एक लाल हेरिंग था।
डेल एंडरसन

23

मैं एक डिफ़ॉल्ट- settings.php फ़ाइल के साथ drupal 7 में समस्या हो रही थी। इस मामले में मैं इसे हटाने या @rtconner की तरह इसे वापस करने में सक्षम नहीं था। मेरे पास इस फ़ाइल का उपयोग करने वाला कोई एप्लिकेशन या कुछ भी नहीं था, और यह एक परमिशन एरर होने के कारण समाप्त हो गया।

मैंने chmod 777 *फ़ोल्डर में जोड़ा और फिर मैं इसे बिना किसी समस्या के वापस करने में सक्षम था।


3
जबकि आप 777किसी फोल्डर पर नहीं चाहते हैं । इससे मेरी समस्या हल हो गई, लेकिन मैंने इसे हल करने के बाद इसे तुरंत डिफ़ॉल्ट में बदल दिया। धन्यवाद!
ब्रैम

13

आप इसे प्राप्त करने के लिए लेखन अनुमति बदल सकते हैं।

sudo chmod -R ug+w . 

यह कमांड 'w'वर्तमान निर्देशिका में सभी फ़ोल्डरों को अनुमति देगा ।


6

मैं इस समस्या में भाग गया जब भी मेरे OS X मशीनों पर "git repack" या "git gc" चल रहा था, यहां तक ​​कि जब व्यवस्थापक विशेषाधिकारों के साथ git चल रहा था, और मैंने अंततः इस पृष्ठ पर आने के बाद इसे हल किया: http://hints.macworld.com /comment.php?mode=view&cid=1734

टर्मिनल को खोलने के लिए फिक्स है, अपने git रेपो, cd में .it फ़ोल्डर में जाएं, और फिर करें:

chflags -R nouchg *

यदि यह मुद्दा था, तो उसके बाद, आपके गिट कमांड सामान्य के रूप में काम करेंगे।


1
मैकवर्ल्ड लिंक अब मान्य नहीं है। यहाँ एक अद्यतन रेफरी है: superuser.com/a/40754
वेब

5

यह तब भी हो सकता है जब:

  1. आपने डॉकर कंटेनर के अंदर एक प्रक्रिया चलाई , और:

  2. कुछ फाइलें उस प्रक्रिया से उत्पन्न हुई थीं, और:

  3. फ़ाइलों का गंतव्य डॉक होस्ट पर एक वॉल्यूम के रूप में रखा गया है, और:

  4. आप gitडॉकर होस्ट पर चल रहे हैं ।


यदि ऐसा है, तो उन फ़ाइलों को चरणबद्ध करें जिन्हें आप कमिट करना चाहते हैं और चलाना चाहते हैं:

git diff --name-only --cached | xargs ls -l 

उपरोक्त मानदंडों को पूरा करने वाली फाइलें निम्नलिखित के साथ पूर्वनिर्मित होंगी:

-rw-r--r-- 1 root root ...

वे स्वामित्व में हैं rootऔर नहीं, जो अच्छा नहीं है। उस रन को ठीक करने के लिए:

 git diff --name-only --cached | xargs -i sh -c 'sudo chown $USER:$USER {}; chmod +w {}'

एक क्लीनर समाधान शायद --userविकल्प का उपयोग करना होगा , इसे डॉकर के लिए देखें और यह डॉकर रचना के लिए


4

जो लोग Intellij का उपयोग कर रहे हैं , के रूप में @rtconner ने कहा कि यह समस्या गिट के कारण नहीं है। चूँकि आपका IDE फ़ाइल लॉक है, इसलिए git इसे लिंक नहीं कर सकता है। तो, आपको अपनी आईडीई को बंद करने की आवश्यकता है और फिर कमांड लाइन के माध्यम से इसे (या जो भी आपको पसंद है) मर्ज करने का प्रयास करें।


वह यह था। AndroidStudio के रूप में Android विकास के साथ हुआ, Intellij है।
रेनहार्ड

2

मेरे मामले में यह एक ":" चरित्र का था एक फ़ोल्डर नाम में विंडोज़ पर चेकआउट करने के लिए git रेपो को प्रीवेंटिटिंग करता है।


2

मैक पर टर्मिनल मैं सिर्फ यह करते हैं

सुडो गिट चेकआउट। (सब कुछ साफ करने के लिए)

और फिर

सुडो गिट पुल मूल


2

जब मैंने करने की कोशिश की, तो मुझे एक वर्चुअल मशीन (उबंटू चलाने) के अंदर यह त्रुटि आई git reset --hard

इसके git reset --hardबजाय OS X होस्ट मशीन से चलाने के लिए फिक्स था ।


1

अन्य सुझावों में से किसी ने भी मेरे लिए काम नहीं किया, लेकिन यह किया:

sudo git reflog expire --expire=now --all && sudo git gc --prune=now --aggressive


1

मेरे मामले में, मेरी विंडोज निर्देशिका ड्रॉपबॉक्स फ़ोल्डर के अंतर्गत है। यह एक जीआईटी-विशिष्ट मुद्दा नहीं है। जब एक फ़ाइल (इस मामले में, लॉक फ़ाइल) बस बनाई गई है, तो यह सिंक्रनाइज़ेशन करने के लिए ड्रॉपबॉक्स को एक और दूसरा लेता है। उस समय के दौरान, फ़ाइल ड्रॉपबॉक्स द्वारा उपयोग में है, और कोई भी 3 पार्टी प्रोग्राम (इस मामले में, गिट) फ़ाइल को हटा नहीं सकता है।

मेरा समाधान ड्रॉपबॉक्स को छोड़ना है और इसलिए ड्रॉपबॉक्स की फाइल सिंक के पीछे के दृश्यों के जादू से बचना है।


0

मुझे इस त्रुटि का सामना करना पड़ा है और यह फ़ाइल / फ़ोल्डर के गलत "स्वामी / समूह" के कारण है । आपको इस फ़ाइल / फ़ोल्डर के "स्वामी / समूह" को बदलने के लिए अपने सर्वर व्यवस्थापक से सहायता लेनी चाहिए और "गिट पुल" का उपयोग करके फिर से प्रयास करना चाहिए। या यदि आप एक सूदखोर हैं, तो सिर्फ सूदो "अपने मालिक का नाम / अपने समूह का नाम" बताएं और फिर से अपने भंडार को खींचने का प्रयास करें। यह कोशिश करो, यह मेरे लिए 100% काम करता है!


0

सुनिश्चित करें कि कोई भी संबद्ध प्रक्रिया या थ्रेड्स नहीं चल रहे हैं और अंतिम कार्य या बल को आवश्यक रूप से छोड़ दें।

सुनिश्चित करें कि आप स्वामित्व की अनुमति को बदलते हैं।


0

बस सामान्य रूप में, इस में होता है अगर विंडोज , और आप उपयोग कर रहे हैं tortoisegit , इसके बारे में स्थिति कैश है tortoisegit । उस प्रक्रिया को मार डालो और इसे मुक्त किया जाएगा।


आप वास्तव में TortoiseGit की स्थिति कैश को पूरी तरह से अक्षम कर सकते हैं, और यह आमतौर पर कुछ ऐसा है जो मैं सुझाऊंगा। यह अक्सर बहुत सारे अनपेक्षित फ़ाइल लॉक का कारण होता है, और यह बहुत अधिक परेशानी का कारण बनता है तो यह लायक है। git statusइसके बजाय कमांड लाइन से उपयोग करें ।

0

मुझे बस ubuntu से उपयोगकर्ता को मेरे वास्तविक उपयोगकर्ता नाम पर स्विच करना था जिसे मैंने पहले सामान किया था। यह तय है।


और विंडोज़ उपयोगकर्ताओं के बारे में क्या?
हेरे नेंटु '

ओपी उबंटू पर था। मैंने विंडोज थ्रेड पर टिप्पणी नहीं की होगी।
मार्क

0

मेरे git क्लाइंट (GitExtensions) को हमेशा व्यवस्थापक मोड में चलाने के लिए मेरे द्वारा हल किया गया।


0

IntelliJ(14.1.3 अल्टीमेट) का उपयोग करते समय मुझे वह समस्या थी , मैं कुछ फ़ाइल में परिवर्तन वापस करना चाहता था।

Git Bashएक और विंडो में खोले गए क्लोजिंग द्वारा हल किया गया - IntelliJकाम में एक और रिवर्ट ट्रायल ।


0

मुझे इस त्रुटि का सामना करना पड़ा और मुझे लगता है कि मुद्दा यह था कि जब मैंने ग्रहण शुरू किया और फाइलें बनाईं, तो मैं 'व्यवस्थापक के रूप में चला' था, इसलिए वे व्यवस्थापक के स्वामित्व में थे (फ़ोल्डर पर 'ls -la' चलाकर)। जब मैंने बाद में फाइलों को छिपाने की कोशिश की, तो उसने मुझे ('फाइलों को अनलिंक करने में असमर्थ') और वह सब नहीं करने दिया। फाइलों पर चामोद करना मेरे लिए फिक्स था।



0

आपको केवल अनुमतियाँ प्रदान करने की आवश्यकता है, अपने प्रोजेक्ट के रूट से नीचे कमांड चलाएँ:

    chmod ug+w <directory path>

0

मेरे पास एक ही मुद्दा था, मैंने कुछ विकल्पों की कोशिश की जैसा कि दूसरों ने सुझाव दिया है।

लेकिन अंत में .it फ़ोल्डर को सही अनुमति देना मुद्दों को हल करता है।

sudo chown -R "${USER:-$(id -un)}" .git

0

मेरे मामले www-dataमें एक मालिक के रूप में स्थापित होने से अनुमति की समस्या हल हो गई :

chown -R www-data project_folder_name

0

मुझे लगता है कि यह आपकी फ़ाइल अनुमति के बारे में है:

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