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
'Programing' 카테고리의 다른 글
HTML 테이블과 함께 정렬 가능한 jQuery UI 사용 (0) | 2020.10.26 |
---|---|
Visual Studio 2012/2013에서 SSIS BIDS 사용 (0) | 2020.10.26 |
iOS 기기의 디스플레이가 어두워 지거나 꺼지지 않도록하려면 어떻게해야합니까? (0) | 2020.10.26 |
루비 문자열 슬라이스 인덱스 : str [n..infinity] (0) | 2020.10.26 |
JavaScript 재정의 방법 (0) | 2020.10.26 |