কম্পিউটার

Git .git/FETCH_HEAD খুলতে পারে না:অনুমতি অস্বীকৃত সমাধান

আপনার প্রোজেক্ট ফোল্ডারের ভিতরে .git/ নামে একটি ডিরেক্টরির ফাইলগুলিতে গিট-এর লেখার অনুমতি প্রয়োজন। যদি গিট কমান্ড লাইনের এই ফোল্ডারে অ্যাক্সেস না থাকে, আপনি একটি ফাইল টেনে আনার চেষ্টা করার সময় ".git/FETCH_HEAD খুলতে পারবেন না:অনুমতি অস্বীকার" এর মতো একটি ত্রুটির সম্মুখীন হবেন।

এই নির্দেশিকায়, আমরা এই ত্রুটির অর্থ কী এবং এর কারণ নিয়ে আলোচনা করতে যাচ্ছি। আমরা একটি উদাহরণ দিয়ে হেঁটে যাব যাতে আপনি শিখতে পারেন কিভাবে আপনার প্রোগ্রামে এটি ঠিক করতে হয়।

.git/FETCH_HEAD খুলতে পারে না:অনুমতি অস্বীকার করা হয়েছে

গিট রিপোজিটরিতে .git/ নামে একটি বিশেষ ফোল্ডার থাকে। আপনি হয়ত এই ফোল্ডারটি দেখেননি কারণ এটি লুকানো আছে। এই ফোল্ডারের লুকানো স্থিতি ফুলস্টপ (“.”) দ্বারা চিহ্নিত করা হয় যা ফোল্ডারের নামের শুরুতে আসে।

এই ফোল্ডারে একটি সংগ্রহস্থল সম্পর্কে বিভিন্ন মেটাডেটা রয়েছে। এটি আপনার প্রকল্প-নির্দিষ্ট কনফিগারেশন বিকল্পগুলি, আপনার প্রকল্পের রেফারেন্স, আপনার বর্তমান HEAD, আপনার সংগ্রহস্থল সম্পর্কে তথ্যের অন্যান্য গুরুত্বপূর্ণ অংশগুলির মধ্যে ট্র্যাক করে।

গিট এই ফোল্ডারে পড়ার এবং লেখার অ্যাক্সেস প্রয়োজন। কারণ আপনি গিট কনফিগারেশন এবং গিট পুলের মতো কমান্ড চালানোর সাথে সাথে এর বিষয়বস্তু পরিবর্তিত হবে।

একটি উদাহরণ দৃশ্য

আমরা গিটহাব থেকে ck-git নামে একটি সংগ্রহস্থল ক্লোন করতে যাচ্ছি। এই সংগ্রহস্থলে README.md নামে একটি ফাইল রয়েছে। এই সংগ্রহস্থল ক্লোন করতে, আমরা git ক্লোন কমান্ড ব্যবহার করতে পারি:

sudo git clone https://github.com/Career-Karma-Tutorials/ck-git

আমাদের README.md ফাইলের বিষয়বস্তু বর্তমানে:

# ck-git

আমরা এই ফাইলটিকে আরও বর্ণনামূলক README.md ধারণ করতে পরিবর্তন করতে চাই৷ আমরা এই ফাইলটিকে একটি টেক্সট এডিটরে খুলতে যাচ্ছি এবং এর বিষয়বস্তুকে নিম্নলিখিতগুলিতে পরিবর্তন করব:

81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷

গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় কাটিয়েছে।

# Career Karma Git Demo

ক্যারিয়ার কর্মের গিট টিউটোরিয়ালের জন্য ডেমো ফাইল সহ একটি সংগ্রহস্থল।

এটা তুলনামূলক ভাল. আমাদের ফাইল আরও সঠিকভাবে আমাদের Git সংগ্রহস্থলের উদ্দেশ্য বর্ণনা করে। এখন, স্টেজিং এরিয়াতে এই পরিবর্তনটি যোগ করা যাক যাতে আমরা একটি প্রতিশ্রুতি তৈরি করতে পারি:

sudo git add README.md

গিট জানে যে আমরা আমাদের পরবর্তী প্রতিশ্রুতিতে README.md যোগ করতে চাই। আমাদের রিমোট রিপোজিটরিতে আমাদের পরিবর্তনগুলি দেখানোর জন্য, আমাদের সেগুলিকে একটি প্রতিশ্রুতিতে যুক্ত করতে হবে:

sudo git commit -m "docs: Make README.md more descriptive"

আমাদের প্রতিশ্রুতি এখন আমাদের দূরবর্তী সংগ্রহস্থলে ঠেলে দেওয়ার জন্য প্রস্তুত। আমরা আমাদের কোড পুশ করার আগে, আমরা আমাদের সংগ্রহস্থলের দূরবর্তী সংস্করণ টানতে যাচ্ছি। এটি আমাদের নিশ্চিত করতে দেবে যে আমরা সংগ্রহস্থলটি ক্লোন করার পর থেকে যে কোনও পরিবর্তন করা হয়েছে তার সাথে আমরা আপ টু ডেট আছি:

git pull

এই কমান্ডটি ফেরত দেয়:

error: cannot open .git/FETCH_HEAD: Permission denied

এই ত্রুটিটি আমাদের বলে যে গিট তার একটি কনফিগারেশন ফাইল, FETCH_HEAD অ্যাক্সেস করতে পারে না৷

সমাধান

আমরা "sudo" কমান্ড ব্যবহার করে ck-git সংগ্রহস্থল ক্লোন করেছি। এর মানে আমাদের সংগ্রহস্থলটি রুট ব্যবহারকারী হিসাবে ক্লোন করা হয়েছিল। যেহেতু রুট ব্যবহারকারী রিপোজিটরি ক্লোন করেছেন, রিপোজিটরির ফাইলগুলি রুট ব্যবহারকারীর মালিকানাধীন।

আমরা ls -la কমান্ড চালিয়ে এটি দেখতে পারি:

total 8
drwxr-xr-x   4 root   staff   128 Sep 17 07:15 .
drwxr-xr-x+ 90 James  staff  2880 Sep 17 07:15 ..
drwxr-xr-x  12 root   staff   384 Sep 17 07:15 .git
-rw-r--r--   1 root   staff 	1 Sep 17 07:15 README.md

আমাদের ফোল্ডারের সমস্ত ফাইল "রুট" এর মালিকানাধীন, যা "স্টাফ" অ্যাকাউন্টের অংশ। যখন আমরা "sudo" ব্যবহার না করে আমাদের দূরবর্তী সংগ্রহস্থল টানতে চেষ্টা করি, তখন একটি ত্রুটি ফিরে আসে। এর কারণ হল আমাদের স্ট্যান্ডার্ড ব্যবহারকারীর অ্যাকাউন্টে ফোল্ডারের ফাইলগুলি পরিবর্তন করার অনুমতি নেই৷

এই সমস্যাটি সমাধান করতে, আমরা আমাদের ফোল্ডারে থাকা ফাইলগুলির মালিকানা পরিবর্তন করতে যাচ্ছি। আমরা chown কমান্ড ব্যবহার করে এটি করতে পারি:

sudo chown -R james:staff .

এই কমান্ডটি .git/ ফোল্ডার সহ আমাদের সংগ্রহস্থলের সমস্ত ফাইল এবং ফোল্ডারের মালিকানার বিবরণ পরিবর্তন করে। আমরা এখন ডিরেক্টরির মালিক এবং প্রোজেক্ট ফোল্ডারে আমাদের সম্পূর্ণ অ্যাক্সেস আছে। আমাদের এখন আমাদের কোড টানতে সক্ষম হওয়া উচিত:

git pull

এই কমান্ডটি সফলভাবে সঞ্চালিত হয় এবং ফিরে আসে:

Already up to date.

আমরা এখন জানি যে আমাদের কোডটি শেষ করার পর থেকে আমাদের দূরবর্তী সংগ্রহস্থলে কোন পরিবর্তন করা হয়নি। আমরা রিপোজিটরি তৈরি করার সময় শেষবার কোড টানি।

উপসংহার

Git ".git/FETCH_HEAD খুলতে পারে না:অনুমতি অস্বীকার করা হয়েছে" ত্রুটিটি ঘটে যখন আপনি একটি দূরবর্তী সংগ্রহস্থল থেকে কোড টানতে চেষ্টা করেন যখন আপনার প্রকল্প ফোল্ডারে .git/ ডিরেক্টরিটি আপনার বর্তমান ব্যবহারকারীর কাছে অ্যাক্সেসযোগ্য নয়।

এই ত্রুটিটি সমাধান করতে, নিশ্চিত করুন যে আপনার বর্তমান ব্যবহারকারীর গিট রিপোজিটরিতে পড়ার-লেখার সুবিধা রয়েছে যার সাথে আপনি কাজ করছেন৷


  1. গিট রেসকিউতে রিসেট করুন

  2. গিট স্ট্যাশ

  3. কিভাবে Git এবং GitHub দিয়ে শুরু করবেন

  4. আপনার অগোছালো ওপেন সোর্স রিপোজিটরি পরিচালনার জন্য কমান্ড লাইন কৌশল