গিট ত্রুটি: .git / লগস / রেফস / রিমোটস / উত্স / মাস্টার সংযুক্ত করতে অক্ষম: অনুমতি অস্বীকৃত


87

আমার একটি অদ্ভুত সমস্যা হচ্ছে যা আমি সমাধান করতে পারি না বলে মনে হচ্ছে। হ্যাপেনড এখানে:

গিথুব সংগ্রহস্থলে আমার কিছু লগ ফাইল ছিল যা আমি সেখানে চাইনি। আমি এই স্ক্রিপ্টটি পেয়েছি যা গিট ইতিহাস থেকে সম্পূর্ণরূপে ফাইলগুলি সরিয়ে দেয়:

    #!/bin/bash
set -o errexit

# Author: David Underhill
# Script to permanently delete files/folders from your git repository.  To use 
# it, cd to your repository's root and then run the script with a list of paths
# you want to delete, e.g., git-delete-history path1 path2

if [ $# -eq 0 ]; then
    exit 0are still
fi

# make sure we're at the root of git repo
if [ ! -d .git ]; then
    echo "Error: must run this script from the root of a git repository"
    exit 1
fi

# remove all paths passed as arguments from the history of the repo
files=$@
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch $files" HEAD

# remove the temporary history git-filter-branch otherwise leaves behind for a long time
rm -rf .git/refs/original/ && git reflog expire --all &&  git gc --aggressive --prune

আমি অবশ্যই প্রথমে একটি ব্যাকআপ তৈরি করেছি এবং তারপরে চেষ্টা করেছি। দেখে মনে হচ্ছে ঠিক আছে। আমি তখন একটি গিট পুশ-এফ করেছিলাম এবং নিম্নলিখিত বার্তাগুলি দিয়ে অভ্যর্থনা জানানো হয়েছিল:

error: Unable to append to .git/logs/refs/remotes/origin/master: Permission denied
error: Cannot update the ref 'refs/remotes/origin/master'.

যদিও সবকিছুই ঠিকঠাক হয়ে গেছে বলে মনে হচ্ছে, কারণ ফাইলগুলি গিটহাবের সংগ্রহশালা থেকে চলে গেছে বলে মনে হচ্ছে, যদি আমি চেষ্টা করে আবার চেষ্টা করি তবে আমি একই জিনিস পাই:

error: Unable to append to .git/logs/refs/remotes/origin/master: Permission denied
error: Cannot update the ref 'refs/remotes/origin/master'.
Everything up-to-date

সম্পাদনা

$ sudo chgrp {user} .git/logs/refs/remotes/origin/master
$ sudo chown {user} .git/logs/refs/remotes/origin/master
$ git push
Everything up-to-date

ধন্যবাদ!

সম্পাদনা

আহ ওহ. সমস্যা। আমি এই প্রকল্পে সারা রাত কাজ করে যাচ্ছি এবং আমার পরিবর্তনগুলি সম্পাদন করতে গিয়েছিলাম:

error: Unable to append to .git/logs/refs/heads/master: Permission denied
fatal: cannot update HEAD ref

তাই আমি:

sudo chown {user} .git/logs/refs/heads/master
sudo chgrp {user} .git/logs/refs/heads/master

আমি আবারও প্রতিশ্রুতি দেওয়ার চেষ্টা করেছি এবং আমি পেয়েছি:

error: Unable to append to .git/logs/HEAD: Permission denied
fatal: cannot update HEAD ref

তাই আমি:

sudo chown {user} .git/logs/HEAD
sudo chgrp {user} .git/logs/HEAD

এবং তারপরে আমি আবারও প্রতিশ্রুতি দেওয়ার চেষ্টা করি:

16 files changed, 499 insertions(+), 284 deletions(-)
create mode 100644 logs/DBerrors.xsl
delete mode 100644 logs/emptyPHPerrors.php
create mode 100644 logs/trimXMLerrors.php
rewrite public/codeCore/Classes/php/DatabaseConnection.php (77%)
create mode 100644 public/codeSite/php/init.php
$ git push
Counting objects: 49, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (27/27), done.
Writing objects: 100% (27/27), 7.72 KiB, done.
Total 27 (delta 15), reused 0 (delta 0)
To git@github.com:IAmCorbin/MooKit.git
59da24e..68b6397  master -> master

হুররে. আমি http://GitHub.com এ ঝাঁপ দাও এবং সংগ্রহশালাটি পরীক্ষা করে দেখি এবং আমার সর্বশেষ প্রতিশ্রুতিটি কোথায় পাওয়া যাবে তা নেই। :: স্ক্র্যাচ মাথা :: তাই আমি আবার ঠেলা:

Everything up-to-date

উম্মম ... দেখে মনে হচ্ছে না। আমি এই সমস্যাটি আগে কখনও পাইনি, এটি কি গিথুব নিয়ে সমস্যা হতে পারে? বা আমি আমার গিট প্রকল্পের সাথে কিছু ঝামেলা করেছি?

সম্পাদনা

কিছু নয়, আমি একটি সাধারণ কাজ করেছি:

git push origin master

এবং এটি জরিমানা ঠেলা।

উত্তর:


219

দেখে মনে হচ্ছে আপনি স্থানীয়ভাবে গিট হিসাবে চালাচ্ছেন, এভাবে originশাখার অবস্থান ট্র্যাক করে থাকা কয়েকটি ফাইলে মালিকানা পরিবর্তন করে ।

ফাইলের মালিকানা ঠিক করুন এবং আপনার ভাল হওয়া উচিত:

# run this from the root of the git working tree
sudo chown -R "${USER:-$(id -un)}" .

4
এই আদেশটি আমার পক্ষে কাজ করেছিল। আমি এটি ক্লোন এর মূল থেকে চালানো। ধন্যবাদ @ চার্লসডুফি!
এরিয়েস্টভ

4
@ মিস্টারস্ট্রেঞ্জার, কেবলমাত্র আপনার যদি বুদ্ধিমান আইএফএসের মান এবং ব্যবহারকারীর নাম থাকে (স্পেস সহ ব্যবহারকারী নামগুলি ঘটতে পারে, যেমন সাইগউইনের ক্ষেত্রে উদাহরণস্বরূপ)। উদ্ধৃতি থেকে নিরাপদ: sudo chown -R "$USER" .এবং বিচক্ষণতা অনুমান না। :)
চার্লস ডাফি

@ মিস্টার স্ট্রেঞ্জার, ... এছাড়াও, পাবস.ওপেনগ্রুপ.আর / অনলাইনপবস / ২০০৯৯৯৫৩৯৯ / ইউটিলিটিস / এর USERদ্বারা গ্যারান্টিযুক্ত নয় , তাই এটি ব্যবহার করা আরও নিরাপদ । "$(id -un)"
চার্লস ডাফি

এটি আমার ব্যবহারকারী বলে is not in the sudoers file. This incident will be reported.- আমি কী করতে পারি তার সম্পর্কে কোনও টিপ? ধন্যবাদ
giovannipds

4
উপরের সিনট্যাক্সটি প্যারামিটার সম্প্রসারণ ; "${var:-default}"ভেরিয়েবলের মানটিতে প্রসারিত হয় "$var", যদি না যে মানটি খালি বা আনসেট না হয় , সেক্ষেত্রে এটি সমাধান হয় default। সুতরাং, আমরা হয় প্রসারিত হয় "$USER", বা চালিয়ে আউটপুট উত্পন্ন id -un
চার্লস ডাফি

4

আসুন এটি ঠিক কী সম্পর্কে অভিযোগ করছে সেদিকে মনোনিবেশ করুন:

অনুমতি অস্বীকার ত্রুটি: রেফ 'রিফ / রিমোটস / উত্স / মাস্টার' আপডেট করতে পারে না।

পুনরাবৃত্ত মোড / মালিকানা পরিবর্তনগুলি করার আগে, সেই ফাইলটিতে আপনার পথটি অতিক্রম করুন এবং কোনও অনুমতি যা ভুল তা স্থির করুন।

আমি মনে করি যে আমি শিকড় থাকাকালীন একটি শাখা তৈরি করে এবং তার পরে আমার ব্যবহারকারী হিসাবে সেই শাখায় গণ্ডগোল করার চেষ্টা করে আমি এই সমস্যাটি সৃষ্টি করেছি।


4
একের পর এক পুরো উত্স গাছের মালিকানা প্রত্যাশা করা ব্যতীত অন্য কারও মালিকানাধীন ফাইলগুলি স্থির করে দেওয়া কি আসলেই উন্নতি হবে?
চার্লস ডাফি

2

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

$find . -user root

সমস্ত ফাইলের মালিক হিসাবে "রুট" কী আছে তা খুঁজে বের করতে। এবং তারপরে আমি নিম্নলিখিত কমান্ডটি ব্যবহার করে যে সমস্ত ফাইলগুলি রুট এর নীচে রয়েছে সেগুলির জন্য মালিক পরিবর্তন করেছি

$sudo chown parineethat `find . -user root`

তারপরে আমি স্থানীয় থেকে দূরবর্তীতে আমার কোডটি চাপতে সক্ষম হয়েছি।


sudo chown parineethat `find . -user root` অবিশ্বাস্য - স্পেস সহ ফাইলের নামগুলি দিয়ে কাজ করবে না। পরিবর্তে sudo find . -user root -exec chown parineethat {} +,। প্রাসঙ্গিক আলোচনার জন্য বাশপিটফলগুলি # 1 দেখুন ।
চার্লস ডাফি

1

এটি আপনার সমস্ত .git ফাইল এবং ডিরেক্টরিগুলি পুনরাবৃত্তভাবে পরিবর্তন করবে (রুট থেকে 1000 এ) এবং টার্মিনালে করা সমস্ত পরিবর্তনের একটি সম্পূর্ণ তালিকা আপনাকে দেবে।

sudo chown -Rc $ UID .git /


0

আমি গিটের জন্য মালিকানা ঠিক করার চেষ্টা করেছি, তবে এটি এখনও কার্যকর হয় না।

তবে, আমি একটি আলাদা নামের সাথে স্থানীয় শাখা তৈরি করে মুছতে সক্ষম হয়েছি।

তারপরে, আমি আবার খুব একই শাখার নামটি পরীক্ষা করে দেখি এবং এটি কার্যকর হয়।

টিএলডিআর;

আমি `স্টেজিং / আরসি 'চেকআউট করতে পারি না।

সুতরাং, আমি এর stagingপরিবর্তে রিমোটটি "স্টেজিং / আরসি" এর দিকে নির্দেশ করছে তা ব্যবহার করে চেকআউট করছি ।

এবং, আমি এটি মুছে ফেলা এবং আবার চেকআউট। তবে, এবার আমি staging/rcআমার স্থানীয় শাখার নাম হিসাবে ব্যবহার করি।

এটি কাজ করে এবং কেন আমি জানি না।


-16

rootনীচের মত প্রথমে অ্যাকাউন্ট থেকে অনুমতি দিন

chmod -R 777 foldername

তারপরে কমিট কমান্ড চালান


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

4
যদি কোনও কারণে আপনি চাইতেন যে আপনার ফাইলগুলি কোনও রুট দ্বারা মালিকানাধীন এবং কোনও নির্দিষ্ট-রুট ব্যবহারকারী দ্বারা লিখিতযোগ্য হয়ে থাকে, তবে এটি করার নিরাপদ উপায় (এমন একটি সিস্টেমে যেখানে প্রতিটি ব্যবহারকারীর নিজস্ব গ্রুপ রয়েছে, যেমন স্ট্যান্ডার্ড অনুশীলন হিসাবে) chown -R root:user directory, এবং তারপরে chmod -R 775 directory(বা 770, যদি অন্য অ্যাকাউন্টগুলিতেও পড়ার অ্যাক্সেসের প্রয়োজন না হয়)।
চার্লস ডাফি

4
@ জেসনগ্লিসন, এমন কিছু যা কেবলমাত্র বৃহত্তর সুরক্ষা গর্ত তৈরি করে "কাজ করে" সম্ভবত এমন কিছু যা ভাঙ্গা থাকাই ভাল।
চার্লস ডাফি

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

4
@ জেসনগ্লিসন, ... কেন আমার পরামর্শ আপনার পক্ষে কাজ করে না, তার জন্য আমার বিশদটি দেখতে হবে - কমান্ডের একটি লগ চালানো হয়েছে, যাতে প্রতিটিের পূর্বে একটি বর্তমান নির্দেশিকা প্রম্পট প্রদর্শন করা হয়; নির্গত কোন ত্রুটির পাঠ্য; ইত্যাদি - মন্তব্য করার জন্য; তবে সেই আলোচনার জায়গাটি উত্তরের সাথে সংযুক্ত করা হবে যার জন্য আপনি এখানে খারাপ ফলাফলের প্রতিবেদন করছেন।
চার্লস ডাফি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.