त्रुटि के साथ खींचने की कोशिश करना: खोलना नहीं कर सकते हैं


209

कृपया मेरी मदद करें, मैं इसे अपने टर्मिनल में चलाने की कोशिश कर रहा हूं:

asgard@asgard-A7N8X2-0:~/CollegePortal$ git pull
error: cannot open .git/FETCH_HEAD: Permission denied

फिर मैं यह कोशिश करता हूं

asgard@asgard-A7N8X2-0:~/CollegePortal$ sudo git pull
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

मेरी मदद करो, मैं इस समस्या को नहीं समझता।


क्या आपने अपनी सार्वजनिक कुंजी को जीथब खाते में जोड़ा है?
13

3
क्या आपके पास स्थानीय निर्देशिका और फ़ाइलों के लिए अनुमति है जहां आप खींचने की कोशिश करते हैं? इसके अलावा, शायद sudoयहाँ बिल्कुल भी मदद नहीं करता है क्योंकि आपको ssh कीज़ (रूट नहीं) की पहुँच की आवश्यकता है।
बेंजामिन बैनियर

मेरे पास यह समस्या थी और मैंने उस फ़ोल्डर (विंडोज) में अपने उपयोगकर्ता को संशोधित और पूर्ण एक्सेस की अनुमति देकर इसे हल किया
फ्रैंक

जवाबों:


193

ऐसा लगता है कि पहला काम नहीं कर रहा है क्योंकि आपके उपयोगकर्ता के पास उस निर्देशिका को बदलने की अनुमति नहीं है, और दूसरा क्योंकि आपके रूट उपयोगकर्ता के पास उस गिट रिपॉजिटरी तक पहुंचने के लिए सही SSH कुंजी नहीं है।

आप जो करने की कोशिश कर रहे हैं, उसके आधार पर, रिपॉजिटरी को एक अलग निर्देशिका में क्लोन करना बेहतर हो सकता है, या हो सकता है chownकि वर्तमान निर्देशिका आपके उपयोगकर्ता के लिए पूर्ण पहुंच हो।


मैं इसी तरह के मुद्दे का सामना कर रहा हूं और मुझे यकीन नहीं है कि मैं अपने www-dataउपयोगकर्ता को .gitनिर्देशिका को अपडेट करने की अनुमति दे सकता हूं । मैं ब्राउज़र में http पर php का उपयोग करके शेल स्क्रिप्ट को कॉल कर रहा हूं। यहाँ
किलानुब

13
यह अक्सर तब होता है जब आप आकस्मिक रूप से भूल जाते हैं कि आप भाग चुके हैं sudo suऔर रेपो में आपके अभिनय की जड़ है। sudo chown -R <username> .उस निर्देशिका में एक सरल जादू काम करता है!
रे

149

जाँच करें कि क्या आपके पास .git/निर्देशिका पर पर्याप्त अनुमति है । आपके पास लिखने की अनुमति होनी चाहिए। आप उन्हें निम्न कमांड के साथ सेट कर सकते हैं।

अपने प्रोजेक्ट फ़ोल्डर में जाएं:

chown -R youruser:yourgroup .git/

1
यह मुझे देता हैchown: youruser: Invalid argument
रात २२:०६ पर जक्कडांस

43
यह होना चाहिएchown -R youruser .git/
मिश्रण

1
मैं chown .git/और उसके मूल फ़ोल्डर काम करने के लिए था
zadubz

यह एक बहुत ही आम समस्या की तरह लगता है .. ठीक है अगर आप अलग-अलग उपयोगकर्ता के साथ काम करते हैं और किसी अन्य उपयोगकर्ता से आपने अपनी अनुमतियों को थोड़ा मुश्किल में बदल दिया है।
रेने होहले

यदि chownइस कमांड को चलाने से भी काम नहीं चल रहा हैsudo chmod 0777 -R .git/
किरण

48

यदि आप समूह को अनुमति देना चाहते हैं,

sudo chmod g+w .git -R

मेरे लिए सबसे अच्छा काम किया।

MacOS के लिए

sudo chmod -R g+w .git 

29

यह एक UNIX अनुमति समस्या है। sudoरिपॉजिटरी की क्लोनिंग के लिए उपयोग न करें । आपके पास रूट के समान ssh कीज़ नहीं हैं और आपको रूट के रूप में वैसे भी काम नहीं करना चाहिए। प्रयास करें ls -laफ़ाइलें और उपयोग पर अनुमतियों को खोजने के लिए chmod(या sudo chown) उन्हें ठीक करने के। उम्मीद है की वो मदद करदे।


बिल्कुल यह! मैं इस समस्या के कारण आया क्योंकि मुझे sudo cloneXCode के नए लाइसेंस समझौते को स्वीकार करने के लिए करना था। जवाब समझौते को स्वीकार करने के लिए है, फिर बिना सूडो के साथ क्लोन करें।
बारनाबी

24

मेरे मामले में इसके बाद ठीक काम:

rm -f .git/FETCH_HEAD

git branch -u

1
इस विशेष मामले के साथ इसने मेरे लिए भी काम किया है ।
पी। मर्गेई

मेरे लिए, यह भी समाधान था। इस समाधान विकल्प के लिए धन्यवाद।
फ्रांसिस्को मारिया कैलिस्टो

21

इस मुद्दे का उत्तर सुनिश्चित करें। .it / FETCH_HEAD ने विशेषाधिकारों को लिखा है और आप सभी सेट हो जाएंगे।

मेरे पास विंडोज पर यह मुद्दा था और इसे लिखित अनुमति देकर हल किया गया था।

यूनिक्स में एक chmod a+rw .git/FETCH_HEADप्रोजेक्ट रिपॉजिटरी से चल सकता है जिसके बाद उसे काम करना चाहिए।


.git/FETCH_HEADयदि अनुमति जारी है तो अकेले काम नहीं करेगा .git
कूर

17

इस तरह आजमाएं,

चरण 1: पहले जांचें कि आप कौन हैं? यह वर्तमान उपयोगकर्ता नाम जैसे ubuntu लौटाएगा

$ whoami 

चरण 2: फिर अपने वर्तमान उपयोगकर्ता के लिए, उस स्थिति में, ubuntu द्वारा अनुमति सेट करें

sudo chown -R ubuntu .git/

अमेज़ॅन लाइटसैल उबंटू पर डिस्कशन इंस्टॉलेशन चलाते समय मेरे लिए यह काम करता है
Jide

11

मेरे मामले में, मैंने केवल .git / FETCH_HEAD फ़ाइल तक पहुंच पढ़ी थी। मुझे एक पुल अनुरोध करने में सक्षम होने के लिए "sudo chmod g + w .git / FETCH_HEAD" करना था।


.git/FETCH_HEADयदि अनुमति जारी है तो अकेले काम नहीं करेगा .git
कूर

मुझे समूह के लिए git फ़ोल्डर में लिखने की अनुमति देनी थीsudo chmod g+w .git/FETCH_HEAD
विलियम

sudo chmod g+w .git/FETCH_HEAD, सही समाधान।
ऋषि कुलश्रेष्ठ

9

मैं विंडोज पर पहला अंक (FETCH_HEAD अनुमति से वंचित) था।

मैंने इसे गिट बैश को एक व्यवस्थापक के रूप में चलाकर ठीक किया (राइट क्लिक, व्यवस्थापक के रूप में चलाएं)।


9

यदि आपने खुद को उस समूह के साथ नहीं जोड़ा है जो आपके पास है .git/, तो आपको चाहिए।

sudo usermod -a -G $(stat -c '%G' .git) $USER
sudo chmod g+u .git -R
sudo chmod g+u .gitignore
su - $USER

यह क्या करता है:

  1. पता लगाता है कि कौन सा समूह का मालिक है .git/और अपने उपयोगकर्ता को उस समूह में जोड़ता है।
  2. यह सुनिश्चित करता है कि समूह के सदस्यों के पास स्वामी के समान अनुमतियाँ हों .git/
  3. इसके लिए दोहराता है .gitignore, जिसकी आपको आवश्यकता होगी
  4. आपके समूह सदस्यता फ़ाइल अनुमतियों को ताज़ा करने के लिए आपको लॉग आउट और वापस

यदि आपने अभी हाल ही में ऐसा कुछ किया है (अपने आप को उस समूह में शामिल किया है जो स्वयं का मालिक है .git/), तो आपको पहले लॉग आउट करने की आवश्यकता है और इससे पहले कि आप .git/FETCH_HEADअपने दौरान लिख सकें git pull


7

कमांड चलाकर अपने वर्तमान उपयोगकर्ता की अनुमति सेट करें

$ sudo chown -R <username> .git/



4

विंडोज 7 चला रहा है, जब मेरे पास यह मुद्दा था, क्योंकि मैंने .it फ़ोल्डर छिपाया था। अनुमतियाँ ठीक थीं, यह सिर्फ छिपा हुआ था। फ़ोल्डर को दिखाते हुए इसे हल किया।


छिपी हुई निर्देशिका, जो थैंक यू।
इयान न्यूलैंड


3

यह मेरे लिए काम किया:

  1. राइट क्लिक .git फ़ोल्डर
  2. क्लिक करें जानकारी प्राप्त करें
  3. अपने उपयोगकर्ता के लिए अनुमति सेट करें
  4. Cog आइकन पर क्लिक करें और संलग्न आइटम पर क्लिक करें

कोई और अनुमति git में त्रुटियों से इनकार किया। 🎉


2

मालिक और .gitनिर्देशिका के समूह के साथ देखें (पहले .गित की मूल निर्देशिका पर जाएं) ll .git, समूह और निर्देशिका के मालिक को देखें, अपने उपयोगकर्ता को स्वामी के समूह में जोड़ेंsudo usermod -a -G yourusername groupsofonwner , फिर लॉगआउट करें = लॉगिन और सब कुछ काम कर रहा है ।

इसलिए गर्मियों में

  1. git की मूल निर्देशिका में जाएं

    $cd your path
    
  2. .gitdirecotry का समूह स्वामी ढूंढें

    $ll .git     
    
  3. अपने उपयोगकर्ता को उस समूह में जोड़ें

    $usermod -a -G yourusername ownergroupofgit
    
  4. लॉगआउट करें और इस बदलाव के लिए सिस्टम में लॉगिन करें।

  5. का आनंद लें ;)


2

उस मुद्दे को मिला जब .गित फ़ोल्डर छिपा हुआ है और इसमें सभी फाइलें भी छिपी हुई हैं। पुनरावर्ती फ़ाइलों को अपडेट किए बिना केवल .it फ़ोल्डर को छिपाएं और यह काम करेगा।


2

इस त्रुटि के कारण कई गुना हो सकते हैं, लेकिन मेरे मामले में मैंने रूट के साथ शाखा को अपडेट किया, फिर जब मैंने इसे सामान्य उपयोगकर्ता के साथ अपडेट करने की कोशिश की तो यह मुझे त्रुटि देता है।

दोनों समाधानों को आज़माएं जो आपके लिए काम करना चाहिए

1- sudo chmod g+w .git -R

अगर यह काम नहीं करता है तो कृपया अगले समाधान की कोशिश करें यह आपकी समस्या को हल करेगा

2 - rm -f .git/FETCH_HEAD

1

विंडोज़ के लिए git एक्सटेंशन का उपयोग करते समय मेरे पास यह संदेश था। मेरा फिक्स बस git एक्सटेंशन को बंद करना था फिर व्यवस्थापक के रूप में फिर से खोलें


1

मेरे मामले में,

सुडो चामोद कुरूप + विक्स .गित-आर

यह कमांड काम करता है।


1

यह समस्या तब उत्पन्न होती है जब आप .गित फ़ोल्डर को पर्याप्त अनुमति नहीं देते हैं। इस समस्या के समाधान के लिये-

  1. सबसे पहले अपनी वर्किंग डायरेक्टरी में नेविगेट करें।
  2. यह कमांड दर्ज करें-

    सुडो चामोद ए + आरडब्ल्यू .गित-आर

आशा करता हूँ की ये काम करेगा..!!


1

मेरे पास ठीक वही त्रुटि थी लेकिन मेरे मामले में, समस्या PHP संस्करण में अपग्रेड के बाद अपाचे को फिर से बनाने का परिणाम थी। लंबी कहानी छोटी, मैं अपाचे मॉड्यूल 'suexec' स्थापित करना भूल गया।

इसका समूह या स्वामित्व से कोई लेना-देना नहीं था। यह पता लगाने में मुझे केवल दो दिन लगे, किसी ने मुझे गोली मार दी ...


1

मेरे मामले में मेरे पास NTFS डिस्क पर प्रोजेक्ट फ़ोल्डर के साथ एक डुअल-बूट सिस्टम (विंडोज 10 और लिनक्स) था। यह पता चला है कि एक और अपडेट पर विंडोज 10 अपनी सेटिंग्स में "तेज स्टार्टअप" द्वारा सक्षम है। के बाद मैं इसे विंडोज में अनियंत्रित किया है - "त्रुटि: नहीं खोल सकता है।। / FETCH_HEAD: अनुमति से इनकार" लिनक्स में चला गया था।


0

मुझे यह मिला क्योंकि मेरे बॉक्स पर 1 से अधिक उपयोगकर्ता खाता था। मैं उपयोगकर्ता A के रूप में लॉग इन किया गया था और उपयोगकर्ता B के लिए निर्देशिका में था। उपयोगकर्ता A को उपयोगकर्ता B के सामान की अनुमति नहीं थी। एक बार जब मुझे एहसास हुआ कि मैं नहीं सोचा था कि मैं फ़ाइल सिस्टम में था, तो इस त्रुटि से समझ में आया।


0

यदि आपको विंडोज़ सर्वर में यही समस्या है, तो आपको कमांड लाइन को पर्याप्त अनुमति के साथ चलाने की आवश्यकता है, जैसे कि प्रशासक की अनुमति।


0

MacOS उपयोगकर्ता के लिए (यदि उच्च सिएरा या उच्चतर संस्करण) इसका उपयोग करें:

sudo chown -R $(whoami) $(brew --prefix)/*

-1

TL; DR: डुअल बूट सिस्टम में, विंडोज के लिए फास्ट स्टार्टअप को बंद करें

मैं अपने दोहरे बूट उबंटू / विंडोज सिस्टम में इस मुद्दे को ले रहा था। मैं विंडोज (NTFS विभाजन) के साथ साझा किए गए किसी भी विभाजन में कुछ भी नहीं लिख सकता था।

मैंने हाल ही में दोनों को फिर से इंस्टॉल किया और विंडोज में "फास्ट स्टार्टअप" की ओर मुड़ना भूल गया । विंडोज़ में रिबूट होने के बाद सब कुछ सामान्य हो गया और उस सुविधा को बंद कर दिया और फिर से चालू किया।


-1

मेरे मामले में काम है कि: मैं सिर्फ sudoकमांड से पहले लिखा था :

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