wake-up-neo.com

Git-Fehler: An .git/logs/refs/remotes/Origin/master kann nicht angehängt werden: Berechtigung verweigert

Ich habe ein seltsames Problem, das ich scheinbar nicht lösen kann. Folgendes ist passiert:

Ich hatte einige Protokolldateien in einem Github-Repository, die ich dort nicht wollte. Ich habe dieses Skript gefunden, das Dateien komplett aus git history entfernt:

    #!/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
[email protected]
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

Ich habe natürlich zuerst ein Backup gemacht und dann probiert. Es schien gut zu funktionieren. Ich machte dann einen git Push -f und wurde mit den folgenden Nachrichten begrüßt:

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

Alles scheint gut zu sein, denn die Dateien scheinen aus dem GitHub-Repository verschwunden zu sein. Wenn ich Push noch einmal versuche, bekomme ich dasselbe:

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

EDIT

$ Sudo chgrp {user} .git/logs/refs/remotes/Origin/master
$ Sudo chown {user} .git/logs/refs/remotes/Origin/master
$ git Push
Everything up-to-date

Vielen Dank!

EDIT

Oh, oh. Problem. Ich habe die ganze Nacht an diesem Projekt gearbeitet und bin gerade meine Änderungen festgeschrieben:

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

Also ich:

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

Ich versuche das Commit noch einmal und ich bekomme:

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

Also ich:

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

Und dann versuche ich das Commit noch einmal:

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 [email protected]:IAmCorbin/MooKit.git
59da24e..68b6397  master -> master

Hurra. Ich springe auf http://GitHub.com und checke das Repository aus. Mein aktuelles Commit ist kein Ort, an dem ich finden kann. :: Kratzkopf :: Also schiebe ich noch einmal:

Everything up-to-date

Ähm ... es sieht nicht so aus. Ich hatte dieses Problem noch nie zuvor. Könnte dies ein Problem mit Github sein? oder habe ich mit meinem git-projekt etwas versaut?

EDIT

Nevermind, ich habe ein einfaches gemacht:

git Push Origin master

und es hat gut geschoben.

58
Corbin Tarrant

Es sieht so aus, als hätten Sie git lokal als root ausgeführt, wodurch der Besitz einiger Dateien geändert wurde, die den Speicherort des Origin-Zweigs verfolgen.

Korrigieren Sie den Besitz der Datei, und Sie sollten in Ordnung sein:

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

In meinem Fall habe ich die Dateien lokal mit Root-Berechtigung erstellt und versucht, den Code mit lokalen Berechtigungen an den Remote-Computer zu übertragen. Also habe ich diesen Befehl ausgeführt 

$find . -user root

um herauszufinden, was alle Dateien als Eigentümer "root" haben. Und dann habe ich den Besitzer für alle Dateien, die sich unter root befinden, mit folgendem Befehl in local geändert 

$Sudo chown parineethat `find . -user root`

Dann konnte ich meinen Code von lokal zu remote verschieben.

2
Parineetha

Konzentrieren wir uns auf das, worüber es sich genau beschwert:

Berechtigung verweigert Fehler: Die Referenz kann nicht aktualisiert werden 'refs/remotes/Origin/master'.

Bevor Sie rekursive Änderungen in Bezug auf Mod/Eigentümer vornehmen, navigieren Sie mit zu dieser Datei und korrigieren Sie alle falschen Berechtigungen.

Ich glaube, ich habe dieses Problem verursacht, indem ich einen Zweig erstellt habe, während ich root war, und dann versuchte, mich mit diesem Zweig als Benutzer anzulegen.

1
Andrew E

Dadurch werden alle Ihre .git-Dateien und -Verzeichnisse rekursiv geändert (von root auf 1000), und Sie erhalten eine vollständige Auflistung aller im Terminal vorgenommenen Änderungen.

Sudo chown -Rc $ UID .git /

0
Donald L Wilson