গিট থেকে টানার সময় ত্রুটি - সংগ্রহস্থল ডাটাবেস .git / অবজেক্টগুলিতে কোনও অবজেক্ট যোগ করার জন্য অপর্যাপ্ত অনুমতি


112

আমার গিট ত্রুটি রয়েছে: "সংগ্রহস্থল ডাটাবেসে কোনও অবজেক্ট যোগ করার জন্য অপর্যাপ্ত অনুমতি g

    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নিজের চেয়ে নিজের মালিকানা দিয়েছেন ।
ক্রিস হাইস

আমি একই সমস্যাটি পেয়েছি @ ক্রিস হেইস তবে কোন .git / অবজেক্ট ফাইল? সেই ফাইল / ডিরেক্টরিটি কোথায়?
পেডোরোমেডিয়োস

1
@pedroremedios .gitএকটি ডিরেক্টরি যা প্রতিটি গিট রেপোর গোড়ায় বিদ্যমান।
ক্রিস হেইস

উত্তর:


255

ধরে নিলাম @ ক্রিসহেইস দুর্ঘটনাক্রমে সুডো সম্পর্কে সঠিক, এটি এটি ঠিক করা উচিত। আপনার সংগ্রহস্থলের ভিতরে থেকে:

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
@ ম্যাটক এটি আপনার রেপোর শীর্ষ স্তরের ডিরেক্টরিটি পাবেন, সুতরাং আপনার রেপো আপনি বর্তমানে যেখানেই থাকুক না কেন কমান্ডটি কাজ করবে। আপনি যদি ইতিমধ্যে মূলে থাকেন তবে আপনি কেবল চালাতে পারেনsudo chown -R $USER:$USER .git
ডুউরফ

7
আমি পেয়েছি: illegal group name
আয়ান

1
আমি ভুল ব্যবহারকারীর নাম ব্যবহার করছিলাম। কমান্ড কাজ করেছে। ধন্যবাদ.
ইয়ান

1
এটি আমার আগে দুর্ঘটনাজনিত সুডোর পরে ঘটেছিল। মালিক / গোষ্ঠী পরিবর্তন করে এটি স্থির করা হয়েছে
এজেড করা হয়েছে

10

প্রকল্পের মূল ডিরেক্টরিতে যান এবং এই সমস্যাটি সমাধান করতে কমান্ডগুলির নীচে রান করুন,

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

2

আমার একটি বোকা ভুল ছিল ... সঠিক ব্যবহারকারীর নাম এবং গোষ্ঠীটি সেট করা হয়েছিল, কিন্তু www-ডেটা হ'ল এটি অ্যাক্সেস করা অ্যাকাউন্ট। ডিরেক্টরিটি ভন্ডিলের মালিকানাধীন ছিল: www-ডেটা, তবে অনুমতিগুলি 755 ছিল তাই www-ডেটা এতে লিখতে পারেনি। এটি দিয়ে স্থির করে:

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


1

একটি ভাল অনুশীলন নয় (কেবল একটি বিকল্প)

আমি উবুন্টু ব্যবহার করছি এবং একই সমস্যার মুখোমুখি হয়েছি। এটির সমাধানের জন্য, আমি কেবল ব্যবহারকারীকে রুটে স্যুইচ করেছি এবং আমি আর কোনও ত্রুটি দেখতে পাচ্ছি না।

$su
password

তারপর,

$git pull origin master

প্রস্তাবিত উপায়: ডিরেক্টরিটির পারমিশন পরিবর্তন করুন


4
এটি (যেমন ইচ্ছা sudo) কাজ করবে , তবে যেখানেই সম্ভব কমান্ডগুলি রুট হিসাবে চালানো এড়ানো ভাল অনুশীলন।
dwurf

@ ডুবুফ মন্তব্যের জন্য আপনাকে ধন্যবাদ। এটি উপরের উত্তরের একটি বিকল্প ছিল। :)
নবীন

1
কোনও সমাধানও নয় - আপনি নিজের রেপোকে সুডো হিসাবে ব্যবহার করতে চান না।
ওয়াক্স কেজ

1
@ ওয়াক্সকেজ হ্যাঁ, তবে আপনি কি ইতিমধ্যে বড় বড় সাহসী লেখাটি দেখতে পাচ্ছেন? :)
নবীন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.