오류로 git pull을 시도하는 중 : .git / FETCH_HEAD를 열 수 없음 : 권한이 거부되었습니다.


209

터미널에서 이것을 실행하려고합니다.

asgard@asgard-A7N8X2-0:~/CollegePortal$ git pull
error: cannot open .git/FETCH_HEAD: Permission denied

그런 다음이 하나를 시도

asgard@asgard-A7N8X2-0:~/CollegePortal$ sudo git pull
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

도와주세요.이 문제를 이해하지 못합니다.


github 계정에 공개 키를 추가 했습니까?
madhead

3
풀을 시도하는 로컬 디렉토리 및 파일에 대한 쓰기 권한이 있습니까? 또한 sudo루트 키가 아닌 ssh 키에 액세스해야하기 때문에 여기에서는 전혀 도움이되지 않습니다.
Benjamin Bannier

이 문제가 발생하여 사용자에게 해당 폴더에 대한 수정 및 전체 액세스 권한을 부여하여 해결했습니다 (Windows)
Frank

답변:


193

첫 번째는 작동하지 않는 것 같습니다. 사용자에게는 해당 디렉토리를 변경할 수있는 권한이 없으며 두 번째는 루트 사용자에게 해당 자식 저장소에 액세스 할 수있는 올바른 SSH 키가 없기 때문입니다.

수행하려는 작업에 따라 저장소를 다른 디렉토리로 복제하는 것이 더 좋거나 chown현재 디렉토리가 사용자에게 모든 액세스 권한을 갖는 것이 좋습니다.


비슷한 문제가 발생하여 www-data사용자 에게 .git디렉토리 업데이트 권한을 부여 할 수 있는지 잘 모르겠습니다 . 브라우저에서 http를 통해 php를 사용하여 쉘 스크립트를 호출하고 있습니다. 자세한 내용은 여기
KillABug

13
이것은 종종 당신이 실수로 당신이 달리고 sudo surepo의 루트 역할을 잊었을 때 발생합니다 . sudo chown -R <username> .그 디렉토리 의 간단한 것이 마술처럼 작동합니다!
Ray

149

.git/디렉토리 에 대한 충분한 권한이 있는지 확인하십시오 . 쓰기 권한이 있어야합니다. 다음 명령으로 설정할 수 있습니다.

프로젝트 폴더로 이동하십시오.

chown -R youruser:yourgroup .git/

1
이것은 나를 준다chown: youruser: Invalid argument
zakdances

43
그것은해야한다chown -R youruser .git/
혼합

1
나는에 가지고 chown .git/작업에 그것에 대한 상위 폴더
zadubz

이것은 매우 일반적인 문제인 것 같습니다. 다른 사용자 및 다른 사용자와 작업 할 경우 권한이 약간 까다로워졌습니다.
René Höhle

경우 chown보다 작동하지 않는이 명령을 실행sudo chmod 0777 -R .git/
키란

48

그룹에 권한을 부여하려면

sudo chmod g+w .git -R

나를 위해 가장 잘 작동했습니다.

MacOS 용

sudo chmod -R g+w .git 

29

이것은 UNIX 권한 문제입니다. sudo저장소를 복제하는 데 사용하지 마십시오 . 루트와 동일한 ssh 키가 없으므로 어쨌든 루트로 작동해서는 안됩니다. 시도 ls -la파일과 사용에 대한 권한을 찾기 위해 chmod(또는 sudo chown이를 해결하기 위해 참조). 희망이 도움이됩니다.


정확히 이것! sudo cloneXCode의 새로운 라이센스 계약에 동의하기 위해 해야했기 때문에이 문제가 발생했습니다 . 답은 계약을 수락 한 다음 sudo없이 복제하는 것입니다.
Barnaby


21

이 문제에 대한 답변은 .git / FETCH_HEAD에 쓰기 권한이 있고 모두 설정되었는지 확인하십시오.

Windows 에서이 문제가 발생했으며 쓰기 권한을 부여하여 해결되었습니다.

유닉스에서는 chmod a+rw .git/FETCH_HEAD프로젝트 저장소에서 실행할 수 있습니다 .


.git/FETCH_HEAD권한 문제가 켜져 있으면 단독으로 작동 하지 않습니다 .git.
Cœur

17

이렇게 해보세요

1 단계 : 먼저 자신이 누구인지 확인 하시겠습니까? 현재 사용자 이름을 반환합니다. 예 : 우분투

$ whoami 

2 단계 : 그런 다음 현재 사용자에게 권한을 설정합니다 (이 경우 ubuntu by

sudo chown -R ubuntu .git/

이것은 Amazon lightsail 우분투에서 담화 설치를 실행하는 동안 저에게 효과적입니다.
Jide

11

필자의 경우 .git / FETCH_HEAD 파일에 대한 읽기 권한 만 가지고있었습니다. 풀 요청을 수행하려면 "sudo chmod g + w .git / FETCH_HEAD"를 수행해야했습니다.


.git/FETCH_HEAD권한 문제가 켜져 있으면 단독으로 작동 하지 않습니다 .git.
Cœur

그룹의 git 폴더에 대한 쓰기 액세스를 허용해야했습니다sudo chmod g+w .git/FETCH_HEAD
William

sudo chmod g+w .git/FETCH_HEAD완벽한 솔루션.
Rishi Kulshreshtha

9

Windows에서 첫 번째 문제 (FETCH_HEAD 권한 거부)가 발생했습니다.

관리자로 Git Bash를 실행하여 수정했습니다 (오른쪽 클릭, 관리자 권한으로 실행).


9

당신이 소유하는 그룹에 자신을 추가하지 않은 경우 .git/, 당신은해야한다.

sudo usermod -a -G $(stat -c '%G' .git) $USER
sudo chmod g+u .git -R
sudo chmod g+u .gitignore
su - $USER

이것이하는 일 :

  1. 어떤 그룹을 소유 .git/하고 사용자를 해당 그룹에 추가하는지 확인합니다.
  2. 그룹 회원에게에 대한 소유자와 동일한 권한이 있는지 확인하십시오 .git/.
  3. 에 대해 이것을 반복하면 .gitignore아마도 필요할 것입니다.
  4. 그룹 멤버쉽 파일 권한을 갱신하기 위해 로그 아웃했다가 다시 로그인합니다.

최근에 이와 같은 작업을 수행 한 경우 (소유 한 그룹에 자신을 추가 .git/한 경우)에 로그 아웃하기 전에 로그 아웃했다가 다시 로그인해야 .git/FETCH_HEAD합니다 git pull.


7

명령을 실행하여 현재 사용자에게 권한을 설정하십시오.

$ sudo chown -R <username> .git/



4

이 문제가 발생했을 때 Windows 7을 실행하면 .git 폴더가 숨겨져 있기 때문입니다. 권한은 괜찮 았고 방금 숨겨져있었습니다. 폴더를 표시하면 문제가 해결되었습니다.


숨겨둔 디렉토리.
Ian Newland


3

이것은 나를 위해 일했다 :

  1. .git 폴더를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 정보 입수를 클릭하십시오
  3. 사용자에게 권한을 설정
  4. Cog 아이콘을 클릭하고 동봉 된 항목에 적용을 클릭하십시오.

더 이상 권한이 자식에서 오류를 거부하지 않았습니다. 🎉


2

.git(먼저 .git의 상위 디렉토리로 이동)을 사용하여 디렉토리 의 소유자와 그룹을보고 디렉토리 ll .git의 그룹과 소유자를 보고을 사용 하여 소유자의 그룹에 사용자를 추가 sudo usermod -a -G yourusername groupsofonwner한 다음 로그 아웃 => 로그인 및 모든 작업을 수행하십시오. .

여름에는

  1. 자식의 부모 디렉토리로 이동

    $cd your path
    
  2. .gitdirecotry의 그룹 소유자를 찾으십시오

    $ll .git     
    
  3. 해당 그룹에 사용자를 추가하십시오

    $usermod -a -G yourusername ownergroupofgit
    
  4. 이 변경 사항에 대해 시스템에 로그 아웃하고 로그인하면 적용됩니다.

  5. 즐기세요;)


2

.git 폴더가 숨겨져 있고 그 안의 모든 파일도 숨겨져 있으면 문제가 발생했습니다. 재귀 파일을 업데이트하지 않고 .git 폴더 만 숨기면 작동합니다.


2

이 오류의 원인은 배수 일 수 있지만 내 경우에는 루트로 분기를 업데이트 한 다음 일반 사용자로 업데이트하려고하면 오류가 발생합니다.

하나의 솔루션을 사용해보십시오.

1- sudo chmod g+w .git -R

작동하지 않으면 다음 해결 방법을 시도하여 문제를 해결하십시오.

2 - rm -f .git/FETCH_HEAD

1

Windows에 git 확장을 사용할 때이 메시지가 나타납니다. 내 수정은 단순히 git 확장을 닫은 다음 관리자 권한으로 다시 여는 것입니다.



1

.git 폴더에 충분한 권한을 부여하지 않으면이 문제가 발생합니다. 이 문제를 해결하려면

  1. 먼저 작업 디렉토리로 이동하십시오.
  2. 이 명령을 입력하십시오

    sudo chmod a + rw .git -R

도움이 되길 바랍니다 .. !!


1

나는 똑같은 오류가 있었지만 내 경우에는 PHP 버전으로 업그레이드 한 후 Apache를 다시 빌드 한 결과 문제가 발생했습니다. 간단히 말해, Apache 모듈 'suexec'를 설치하는 것을 잊었습니다.

그룹이나 소유권과는 아무런 관련이 없습니다. 알아내는 데 이틀 밖에 걸리지 않았습니다. 누군가 나를 쏴 버렸습니다 ...


1

필자의 경우 NTFS 디스크에 프로젝트 폴더가있는 이중 부팅 시스템 (Windows 10 및 Linux)이있었습니다. 다른 업데이트에서 Windows 10 자체적으로 설정에서 "빠른 시작"이 가능해졌습니다. Windows에서 확인을 해제 한 후 Linux에서 "오류 : .git / FETCH_HEAD : 권한이 거부되었습니다"가 사라졌습니다.


0

상자에 둘 이상의 사용자 계정이 있었기 때문에 이것을 얻었습니다. 사용자 A로 로그인했고 사용자 B의 디렉토리에있었습니다. 사용자 A는 사용자 B의 물건에 대한 권한이 없습니다. 내가 파일 시스템에 있다고 생각한 곳이 아니라는 것을 알게되면이 오류가 의미가 있습니다.


0

Windows 서버에서 동일한 문제를 발견하면 관리자 권한과 같은 충분한 권한으로 명령 행을 실행해야합니다.


0

MacOS 사용자 (High Sierra 이상 버전 인 경우)는 다음을 사용하십시오.

sudo chown -R $(whoami) $(brew --prefix)/*

-1

TL; DR : 듀얼 부팅 시스템에서 Windows 용 빠른 시작을 끕니다.

이중 부팅 Ubuntu / Windows 시스템에서이 문제가 발생했습니다. Windows와 공유되는 파티션 (NTFS 파티션)에 아무것도 쓸 수 없습니다.

최근에 두 가지를 모두 다시 설치 했으며 Windows에서 "빠른 시작" 을 끄는 것을 잊었습니다 . Windows에서 재부팅하고 해당 기능을 끈 다음 다시 시작하면 모든 것이 정상으로 돌아갔습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.