Programing

Git 오류 : .git / logs / refs / remotes / origin / master에 추가 할 수 없음 : 권한이 거부되었습니다.

lottogame 2020. 10. 26. 07:40
반응형

Git 오류 : .git / logs / refs / remotes / origin / master에 추가 할 수 없음 : 권한이 거부되었습니다.


해결할 수없는 이상한 문제가 있습니다. 다음은 일어난 일입니다.

github 저장소에 원하지 않는 로그 파일이 있습니다. 다음과 같이 git 히스토리에서 파일을 완전히 제거하는이 스크립트를 찾았습니다.

    #!/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 push -f를 수행하고 다음 메시지를 받았습니다.

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

파일이 GitHub 저장소에서 사라진 것처럼 보이므로 모든 것이 잘 푸시 된 것 같습니다. 다시 푸시를 시도하면 동일한 결과를 얻습니다.

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

Hooray. I jump on http://GitHub.com and check out the repository, and my latest commit is no where to be found. ::scratch head:: So I push again:

Everything up-to-date

Umm...it doesn't look like it. I've never had this issue before, could this be a problem with github? or did I mess something up with my git project?

EDIT

Nevermind, I did a simple:

git push origin master

and it pushed fine.


This looks like you ran git as root locally, thus changing ownership on some of the files tracking the location of the origin branch.

Fix the file ownership, and you should be fine:

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

In my case I created the files with root permission locally and tried to push the code to remote with local permissions. So I ran this command

$find . -user root

to find out what all files have "root" as owner. And then I changed owner for all the files that are under root to local using following command

$sudo chown parineethat `find . -user root`

Then I was able to push my code from local to remote.


Let's concentrate on what it's complaining about exactly:

Permission denied error: Cannot update the ref 'refs/remotes/origin/master'.

Before doing recursive mod/ownership changes, traverse your way to that file and fix any permissions that are incorrect.

I think I caused this issue by creating a branch while I was root and then trying to mess with that branch as my user.


This will change all your .git files and directories recursively (from root to 1000)and give you a full listing of all the changes made in the terminal.

sudo chown -Rc $UID .git/


Please first give the permissions from root account like below

chmod -R 777 foldername

after that run the commit command

참고URL : https://stackoverflow.com/questions/2642836/git-error-unable-to-append-to-git-logs-refs-remotes-origin-master-permission

반응형