গিট পুশ ত্রুটি: পুরানো লিঙ্কটি কাটাতে অক্ষম (অনুমতি অস্বীকার)


190

রিমোট সার্ভারে আমার সংগ্রহস্থলের গিট চেকআউট করার জন্য আমার পোস্ট-রিসিভ হুক সেট আপ হয়েছে:

#!/bin/sh
GIT_WORK_TREE=/var/www/<website> git checkout -f

কিন্তু যখন আমি আমার স্থানীয় মেশিনটি থেকে সার্ভারের গিট সংগ্রহস্থলের দিকে ঠেলাঠেলি করি, তখন আমি নিম্নলিখিত ত্রুটি বার্তাগুলি পাই:

remote: error: unable to unlink old '<file>' (Permission denied)

এটি প্রায়শই বার দেখা যায়, প্রায় প্রতিটি ফাইলের জন্য একটি ত্রুটি বার্তা।

তবে আমার কাছে একটি README.txt ফাইল রয়েছে যা আমি গিট ব্যবহার করে পরিবর্তন করতে সক্ষম হলাম, এর অনুমতিগুলি এখানে রয়েছে:

-rw-r--r--  1 <serverusername>  <serverusername>  2939 Aug  2 10:58 README.txt

তবে ঠিক একই মালিক এবং একই অনুমতি সহ অন্যান্য ফাইলগুলি আমাকে সেই ত্রুটি দেয়।

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

স্পষ্টতই এটি অনুমতি সম্পর্কিত ত্রুটি বলে মনে হচ্ছে, তবে আমি কোনও সমাধানের কোনও সমাধানের উপায় খুঁজে পাচ্ছি না?

উত্তর:


335

যখন আপনার ফাইলটিকে লিঙ্কমুক্ত করতে হয়, আপনাকে ডিরেক্টরিটির জন্য 'ডাব্লু' অনুমতি থাকতে হবে, কোন ফাইলটিতে ফাইলটির জন্য নয় ...


65
আসলে সমস্যাটি ছিল, আমি sudo chmod -R g+wদোষী ফোল্ডারগুলি ব্যবহার করে এটি ঠিক করেছিলাম ।
rfc1484

1
ওএমজি ধন্যবাদ চিন্তাভাবনা ফাইলের উপর সঠিক ছিল ভেবে খুব বিরক্ত হয়েছিল। উপলব্ধি করে যে আপডেটগুলি আসলে mvওভাররাইটের চেয়ে ক্রিয়াগুলির মতো আরও বেশি are
ডাবল জোশ

1
দির অনুমতি পরিবর্তন করা আমার পক্ষে কাজ করেছে (ধন্যবাদ!) তবে এটি অদ্ভুত কারণ আমি কোনও সমস্যা ছাড়াই sftp এর মাধ্যমে প্রশ্নের মধ্যে থাকা ফাইলগুলিকে নিজেই ওভাররাইট করতে পারি। আশ্চর্যজনক যে গিট যখন একই কাজ করার চেষ্টা করেছিল তখন তা পারে না।
জোনাথন স্টার্ক

1
এছাড়াও মনে রাখবেন যে আপনার যদি এখনও ফাইলটি খোলা থাকে তবে ত্রুটিটিও উপস্থিত হবে। একই ত্রুটি ছিল এবং সে কারণেই আমি আমার পরিবর্তনগুলিতে ঠেলাতে পারিনি
মাতিয়াস

1
ls -lপ্রদর্শনের প্রথম অক্ষরটি ফাইলের প্রকারটি নির্দেশ করে এবং অনুমতিগুলির সাথে সম্পর্কিত নয়। বাকি নয়টি অক্ষর তিনটি সেটে রয়েছে, প্রতিটি প্রত্যেকেই তিনটি অক্ষর হিসাবে অনুমতি শ্রেণীর প্রতিনিধিত্ব করে। প্রথম সেটটি ব্যবহারকারী শ্রেণীর প্রতিনিধিত্ব করে। দ্বিতীয় সেটটি গ্রুপ শ্রেণীর প্রতিনিধিত্ব করে। তৃতীয় সেটটি অন্য শ্রেণীর প্রতিনিধিত্ব করে। g+wChmod গোষ্ঠীবদ্ধ সেট (দেয় gপ্যারামিটার) লিখন (করার অনুমতি wপ্যারামিটার)
rfc1484


41

আপনি যদি কোনও আইডিই ব্যবহার করেন তবে সম্ভবত সমস্যাটি হ'ল ফাইলটি কোনও প্রক্রিয়া দ্বারা ব্যবহৃত হয়েছিল। আপনার টমক্যাটের মতো ফাইলটি ব্যবহার করা হতে পারে। সেই নির্দিষ্ট প্রক্রিয়াটি চিহ্নিত করার এবং এটি বন্ধ করার চেষ্টা করুন। এটি আপনার সমস্যার সমাধান করা উচিত।


12

আমার একই সমস্যা ছিল এবং উপরের সমাধানগুলির কোনওটিই আমার পক্ষে কার্যকর হয়নি। আমি আপত্তিজনক ফোল্ডারটি মুছে ফেলেছি। তারপর:

git reset --hard

গিট স্ট্যাটাসটি পরিষ্কার করতে কোনও স্থির ফাইল মুছে ফেলা হয়েছে, তারপরে:

git pull

এটি অবশেষে কাজ করে।

দ্রষ্টব্য: উদাহরণস্বরূপ, যদি ফোল্ডারটি বিল্ড ফাইলগুলির সাথে একটি পাবলিক ফোল্ডার হয় তবে ফাইলগুলি পুনর্নির্মাণ করতে ভুলবেন না


ধন্যবাদ, অন্য কোনও কিছুই আমার পক্ষে কাজ করছে না, এটি মুছে ফেলা একমাত্র বিকল্প বলে মনে হয়েছিল।
math0ne

আমার ক্ষেত্রে, আপত্তিজনক ফোল্ডারটি হ'ল .git
তুষার

11

আমি মনে করি সমস্যাটি ফোল্ডারের মালিকানার সাথে তাই এটি বর্তমান ব্যবহারকারীর মালিকানাতে সেট করুন

sudo chown -R your_login_name /path/to/folder
আপনি সমাধানটি [এখানে] [১] পেতে পারেন

7

এফডব্লিউআইডাব্লু - আমারও একই সমস্যা ছিল এবং আমি নিশ্চিত নই যে এটি এটিকে হ্রাস করেছে কিনা (অনুমতি পরিবর্তনের বাইরে): এই সমস্যাটির সাথে শাখাটি ব্যবহার করে যাচ্ছিল Eclipse বন্ধ করে দেওয়া।


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

3

এটি একটি পুরানো প্রশ্ন, তবে এটি ম্যাক ব্যবহারকারীদের সহায়তা করতে পারে।

আপনি যদি টাইম মেশিনের মাধ্যমে টাইম মেশিনের মাধ্যমে ফাইলগুলি পুনরুদ্ধার করার পরিবর্তে ম্যানুয়ালি ফাইলগুলি অনুলিপি করছেন তবে এটি সমস্ত কিছুতে এসিএল যুক্ত করবে , যা আপনার অনুমতিগুলিতে গোলযোগ করতে পারে।

উদাহরণস্বরূপ, "নিখুঁতভাবে ম্যাক ওএস এক্স ফাইলের অনুমতিগুলি কীভাবে ফিক্স করবেন" এই নিবন্ধের বিভাগটি দেখায় যে "প্রত্যেকের" কাছে কাস্টম অনুমতি রয়েছে, যা এটিকে সমস্ত কিছু মিস করে:

খারাপ অনুমতিগুলি, http://dreamlight.com/how-to-fix-mac-os-x-file-perifications থেকে

আপনাকে সেই ডিরেক্টরিগুলি / ফাইলগুলি থেকে এসিএলগুলি সরিয়ে ফেলতে হবে। এই সুপার ব্যবহারকারীর উত্তরটি এতে প্রবেশ করে তবে এখানে আদেশটি দেওয়া হল:

sudo chmod -RN .

তারপরে আপনি নিশ্চিত করতে পারেন যে আপনার ডিরেক্টরি এবং ফাইলগুলির যথাযথ অনুমতি রয়েছে। আমি 750ডিরেক্টরি এবং 644ফাইলের জন্য ব্যবহার করি ।


2

আমি যখন এই সার্ভারটি চালাচ্ছি (ইন্টেলিজ) তখন আমি এই ত্রুটিটি এবং অন্যান্য অদ্ভুত গিট ত্রুটিগুলি পাই। সার্ভারটি থামানো এবং গিট কমান্ড পুনরায় চেষ্টা করা আমার জন্য এটি প্রায়শই ঠিক করে দেয়।


2
git reset --hard

আমার জন্য কাজ করেছেন


4
এটি কিছুটা চরম হতে পারে কারণ এটি আরও অনেক কিছু করে does
cdddr

2
sudo chown -R $USER:$USER .

আমার জন্য কাজ করেছে।


1

কিছু ফাইল রাইট-সুরক্ষিত থাকে যা গিট এমনকি এটি লিখতে পারে না। লেখার অনুমতি দেওয়ার জন্য ফোল্ডারের অনুমতি পরিবর্তন করুন যেমন sudo chmod 775 ফোল্ডারনাম

এবং তারপরে আবার গিট টান


0

এছাড়াও রুট ডিরেক্টরি নিজেই অনুমতি পরীক্ষা করতে মনে রাখবেন!

তুমি খুঁজে পেতে পার:

drwxr-xr-x  9 not-you www-data  4096 Aug  8 16:36 ./
-rw-r--r--  1     you www-data  3012 Aug  8 16:36 README.txt
-rw-r--r--  1     you www-data  3012 Aug  8 16:36 UPDATE.txt

এবং 'অনুমতি অস্বীকৃত' ত্রুটি পপ আপ হবে।


0

টানা স্থানীয় পরিবর্তন তৈরি করেছে।

আপনার চিহ্নবিহীন ফাইল যুক্ত করুন:

গিট অ্যাড

স্ট্যাশ পরিবর্তন হয়।

গিট স্ট্যাশ

স্থানীয় পরিবর্তনগুলি ফেলে দিন।

গিট স্ট্যাশ ড্রপ

সুডোর অনুমতি নিয়ে টানুন

সুডো গিট টান দূরবর্তী শাখা


স্থানীয় ফাইলগুলির অনুমতি সম্পর্কে
এটিই ছিল গিটের
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.