गेट त्रुटि: .it / log / refs / remotes / मूल / मास्टर के लिए अपील करने में असमर्थ: अनुमति से इनकार किया


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

मैं, ज़ाहिर है, पहले एक बैकअप बनाया और फिर कोशिश की। यह ठीक काम करने के लिए लग रहा था। मैंने तब एक git पुश-ऑफ किया और निम्नलिखित संदेशों के साथ अभिवादन किया गया:

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

उम्म ... यह ऐसा नहीं लगता है। मैं इस मुद्दे को पहले कभी नहीं किया है, यह github के साथ एक समस्या हो सकती है? या मैं अपने git परियोजना के साथ कुछ गड़बड़ कर दिया?

संपादित करें

कोई बात नहीं, मैंने एक सरल किया:

git push origin master

और यह ठीक धक्का दिया।

जवाबों:


216

ऐसा लगता है कि आप स्थानीय रूप से रूट के रूप में भाग गए, इस प्रकार originशाखा के स्थान पर नज़र रखने वाली कुछ फ़ाइलों पर स्वामित्व बदल रहा है ।

फ़ाइल स्वामित्व को ठीक करें, और आपको ठीक होना चाहिए:

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

1
उस आज्ञा ने मेरे लिए काम किया। मैंने इसे क्लोन की जड़ से चलाया। धन्यवाद @CharlesDuffy!
अराइस्टव

4
@ Mr.Stranger, यदि आपके पास एक Iane मान है और उपयोगकर्ता नाम (रिक्त स्थान के साथ उपयोगकर्ता नाम, उदाहरण के लिए cygwin पर हो सकता है)। उद्धरण के लिए सुरक्षित है: sudo chown -R "$USER" .और पवित्रता नहीं मानते हैं। :)
चार्ल्स डफी २ '

@ Mr.Stranger, ... भी, pubs.opengroup.org/onlinepubs/009695399/utilities/…USER द्वारा गारंटी नहीं दी जाती है , इसलिए इसका उपयोग करना अधिक सुरक्षित हो सकता है । "$(id -un)"
चार्ल्स डफी

यह मेरा उपयोगकर्ता कहता है is not in the sudoers file. This incident will be reported.- मैं क्या कर सकता हूं इसके बारे में कोई टिप? धन्यवाद।
जियोनीनिड्स

1
ऊपर सिंटैक्स पैरामीटर विस्तार है ; "${var:-default}"चर के मूल्य तक फैलता है "$var", जब तक कि मूल्य खाली या परेशान नहीं होता है, जिस स्थिति में यह हल होता है default। इस प्रकार, हम या तो विस्तार करते हैं "$USER", या रनिंग द्वारा उत्पन्न आउटपुट id -un
चार्ल्स डफी

3

आइए ध्यान दें कि वास्तव में इसके बारे में क्या शिकायत है:

अनुमति से इनकार किया त्रुटि: रेफरी को अपडेट नहीं कर सकता 'रेफ्स / रिमोट / मूल / मास्टर'।

पुनरावर्ती मॉड / स्वामित्व परिवर्तन करने से पहले, उस फ़ाइल पर अपना रास्ता निकालें और जो भी गलत हों, उन्हें अनुमति दें।

मुझे लगता है कि जब मैं जड़ था तब मैंने एक शाखा बनाकर इस समस्या का कारण बनाया और फिर उस शाखा को अपने उपयोगकर्ता के रूप में गड़बड़ाने की कोशिश की।


3
क्या उन फाइलों को ठीक करना है जो उपयोगकर्ता के अलावा किसी अन्य के पास हैं जो पूरे स्रोत के पेड़ को एक-एक करके खुद ही सुधारने की उम्मीद करते हैं?
चार्ल्स डफी

2

मेरे मामले में मैंने स्थानीय रूप से रूट अनुमति वाली फाइलें बनाईं और स्थानीय अनुमतियों के साथ कोड को रिमोट से पुश करने की कोशिश की। इसलिए मैंने इस कमांड को चलाया

$find . -user root

यह पता लगाने के लिए कि स्वामी के रूप में सभी फाइलों में "रूट" क्या है। और फिर मैंने निम्नलिखित कमांड का उपयोग करके उन सभी फाइलों के लिए मालिक को बदल दिया जो रूट के अंतर्गत स्थानीय हैं

$sudo chown parineethat `find . -user root`

तब मैं अपने कोड को लोकल से रिमोट में पुश करने में सक्षम था।


sudo chown parineethat `find . -user root` अविश्वसनीय है - रिक्त स्थान के साथ फ़ाइल नाम के साथ सही काम नहीं करेगा। इसके बजाय, sudo find . -user root -exec chown parineethat {} +। संबंधित चर्चा के लिए BashPitashes # 1 देखें ।
चार्ल्स डफी

1

यह आपकी सभी .it फ़ाइलों और निर्देशिकाओं को पुनरावर्ती रूप से (रूट से 1000 तक) बदल देगा और आपको टर्मिनल में किए गए सभी परिवर्तनों की पूरी सूची देगा।

सुडो चाउन -Rc $ UID .गित /


0

मैंने गिट के लिए स्वामित्व को ठीक करने की कोशिश की है, लेकिन यह अभी भी काम नहीं करता है।

लेकिन, मैंने इसे एक अलग नाम से स्थानीय शाखा बनाकर ठीक करने में कामयाबी हासिल की है।

फिर, मैं फिर से उसी शाखा का नाम देखता हूं और यह काम करता है।

TLDR;

मैं `स्टेजिंग / आरसी 'चेकआउट नहीं कर सकता।

इसलिए, मैं stagingइसके बजाय चेकआउट का उपयोग करता हूं कि रिमोट `मचान / आरसी 'की ओर इशारा करता है।

और, मैं इसे हटा देता हूं और फिर से चेकआउट करता हूं। लेकिन, इस बार मैं staging/rcअपने स्थानीय शाखा के नाम के रूप में उपयोग करता हूं।

यह काम करता है और मुझे पता नहीं क्यों।


-16

कृपया rootनीचे दिए गए खाते से पहले अनुमति दें

chmod -R 777 foldername

उसके बाद कमिट कमांड चलाएं


7
यह बेहद खतरनाक है - यह सिस्टम पर कोई भी खाता देता है, जिसमें केवल "कोई नहीं" विशेषाधिकार के साथ एक समझौता किया गया डेमॉन शामिल है, जो आपकी फ़ाइलों तक पहुंच लिखता है। सिस्टम डेमॉन सुरक्षा-संवेदनशील घटकों के लिए "कोई नहीं" (या अन्य अप्रकाशित खाते) का उपयोग करते हैं क्योंकि किसी भी खाते को समझौता किए जाने पर भी बहुत जोखिम भरा काम करने में सक्षम नहीं होना चाहिए। सभी उपयोगकर्ताओं को, यहां तक ​​कि किसी को भी, आपकी फ़ाइलों तक पहुंच लिखने की अनुमति देकर, आप आवश्यक सुरक्षा उपायों को बेकार कर रहे हैं।
चार्ल्स डफी

1
यदि किसी कारण से आप चाहते थे कि आपकी फाइलें किसी विशिष्ट गैर-रूट उपयोगकर्ता द्वारा रूट और लेखन योग्य हों, तो ऐसा करने का सुरक्षित तरीका (ऐसी प्रणाली पर जहां प्रत्येक उपयोगकर्ता का अपना समूह है, जैसा कि मानक अभ्यास है) chown -R root:user directory, और तब chmod -R 775 directory(या 770, यदि अन्य खातों को रीड एक्सेस की आवश्यकता नहीं है)।
चार्ल्स डफी

1
@ जैसनग्लिसन, कुछ ऐसा जो केवल बड़े पैमाने पर सुरक्षा छेद बनाकर "काम करता है" शायद कुछ ऐसा है जो टूटे रहने से बेहतर होगा।
चार्ल्स डफी

1
@ जैसनग्लिसन, inasmuch के रूप में हम सलाह दे रहे हैं और एक समुदाय के रूप में, उस समुदाय के एक सदस्य के रूप में, हम जो सलाह और गुणवत्ता प्रदान करते हैं, वह मेरा व्यवसाय है किसी और के रूप में - और सुरक्षा में काम करने वाले किसी व्यक्ति के रूप में , मैं इस विषय पर टिप्पणी करने के लिए तैयार हूं। प्रारंभिक टिप्पणी देखें, फिर से: प्रभाव।
चार्ल्स डफी

1
@ जैसनग्लिसन, ... जैसा कि मेरी सलाह आपके लिए काम नहीं करती है, मुझे विवरण देखने की आवश्यकता है - आदेशों का एक लॉग क्रम में, प्रत्येक प्रॉम्प्ट से पहले वर्तमान कार्य निर्देशिका दिखा रहा है; उत्सर्जित किसी भी त्रुटि का पाठ; आदि - टिप्पणी करने के लिए; लेकिन उस चर्चा के लिए जगह उस उत्तर से जुड़ी होगी जिसके लिए आप बुरे परिणामों की रिपोर्ट कर रहे हैं, जैसा कि यहाँ विरोध किया गया है।
चार्ल्स डफी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.