गिट से खींचने में त्रुटि - रिपॉजिटरी डेटाबेस में एक वस्तु जोड़ने के लिए अपर्याप्त अनुमति ।it / ऑब्जेक्ट्स


112

मेरे पास जीआईटी त्रुटि है: "रिपॉजिटरी डेटाबेस में ऑब्जेक्ट जोड़ने के लिए अपर्याप्त अनुमति।” / ऑब्जेक्ट्स "हर बार जब मैं" गिट पुल ओरिजिनल डेवलपमेंट "करता हूं।

    remote: Counting objects: 70, done.
    remote: Compressing objects: 100% (7/7), done.
    remote: Total 42 (delta 35), reused 42 (delta 35)
    error: insufficient permission for adding an object to repository database     .git/objects

    fatal: failed to write object
    fatal: unpack-objects failed

1
स्पष्ट प्रश्न: क्या आपके पास डिस्क पर फ़ाइलों के लिए अधिकार हैं?
लास वी। कार्लसन

17
.git/objectsफ़ाइल की अनुमतियों की जाँच करें । ऐसा लगता है कि आपने गलती sudoसे अतीत में किसी बिंदु पर उपयोग किया होगा और rootखुद के बजाय स्वामित्व दिया ।
क्रिस हेस

मैं एक ही समस्या हो रही है @ क्रिसहेट्स लेकिन कौन सा .it / ऑब्जेक्ट्स फ़ाइल? वह फ़ाइल / निर्देशिका कहां है?
पैडरमेडियोसाइड

1
@pedroremedios .gitएक निर्देशिका है जो हर git रेपो के आधार पर मौजूद है।
क्रिस हेस

जवाबों:


255

एक आकस्मिक सुडोकू के बारे में @ChrisHayes सही है, यह इसे ठीक करना चाहिए। अपने भंडार के अंदर से:

sudo chown -R $USER:$USER "$(git rev-parse --show-toplevel)/.git"

अपडेट : आप में से जो illegal group nameत्रुटि प्राप्त कर रहे हैं , उसके लिए यह प्रयास करें:

sudo chown -R $(id -u):$(id -g) "$(git rev-parse --show-toplevel)/.git"

7
क्या करता git rev-parse --show-toplevelहै? मैं केवल chown -R user:userअपने रेपो के शीर्ष-स्तरीय निर्देशिका का उपयोग करके समस्या को ठीक करने में सक्षम था ।
मैट के

9
@MattK को आपके रेपो की शीर्ष-स्तरीय निर्देशिका मिलेगी, इसलिए कमांड आपके वर्तमान में आपके रेपो में कहां है, इसकी परवाह किए बिना काम करेगी। यदि आप पहले से ही रूट में हैं तो आप बस चला सकते हैंsudo chown -R $USER:$USER .git
dwurf

7
मुझे मिलता है: illegal group name
इयान

1
मैं गलत उपयोगकर्ता नाम का उपयोग कर रहा था। कमान ने काम किया। धन्यवाद।
इयान

1
यह मेरे साथ पहले भी एक आकस्मिक सुडोकू के बाद हुआ था। मालिक / समूह को बदलना इसे तय किया
Asped

10

प्रोजेक्ट की मूल निर्देशिका पर जाएं और इस समस्या को ठीक करने के लिए कमांड से नीचे चलाएं,

cd .git/objects
sudo chown -R yourname:yourgroup *

2

मेरा एक बेवकूफ गलती थी ... सही उपयोगकर्ता नाम और समूह सेट किया गया था, लेकिन www-डेटा इसे एक्सेस करने वाला खाता था। निर्देशिका vaindil के स्वामित्व में थी: www-data, लेकिन अनुमतियां 755 थीं, इसलिए www-data इसे नहीं लिख सकता था। इसे इसके साथ तय करें:

$ sudo chmod -R 775 /path/to/repo


1

अच्छा व्यवहार नहीं (सिर्फ एक विकल्प)

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

$su
password

फिर,

$git pull origin master

अनुशंसित तरीका: डायरैक्ट्री की अवधि को बदलें


4
यह काम करेगा (जैसा होगा sudo), लेकिन जहां भी संभव हो, रूट के रूप में कमांड चलाने से बचने के लिए यह सबसे अच्छा अभ्यास है।
dwurf

@dwurf टिप्पणी के लिए धन्यवाद। यह केवल उत्तर के लिए एक विकल्प था। :)
नबिन

1
एक समाधान के रूप में अच्छी तरह से नहीं - आप sudo के रूप में अपने रेपो का उपयोग नहीं करना चाहते हैं।
वैक्स केज

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