Git Checkout 경고 : 파일 링크를 해제 할 수 없습니다. 권한이 거부되었습니다.


109

'연결 해제 할 수 없음'경고와 관련된 git에 대한 유사한 문제가 있다는 것을 알고 있지만 사용할 수 없었습니다.

가장 큰 차이점은 이것이 내가 어떤 식 으로든 서브 모듈을 다루지 않았을 때 발생했다는 것입니다 (이전에 다루어 본 적이 없습니다). '업그레이드'라는 브랜치를 만들고 이전 프레임 워크 파일을 삭제하고 새 파일에 복사했습니다. 나는 git add -A를 사용한 다음 모든 것을 커밋했습니다. 트렁크 브랜치를 체크 아웃하려고 할 때 다음 오류로 응답했습니다.

warning: unable to unlink requirements/views/sk/index.php: Permission denied
warning: unable to unlink requirements/views/sv/index.php: Permission denied
warning: unable to unlink requirements/views/zh/index.php: Permission denied
warning: unable to unlink requirements/views/zh_cn/index.php: Permission denied
warning: unable to unlink requirements/views/zh_tw/index.php: Permission denied

...기타. 수백 개가 있습니다.

처음에는 이것이 단순히 권한 문제라고 생각했기 때문에 전체 요구 사항 디렉토리에 그룹 쓰기 권한을 반복적으로 추가했지만 변경 사항은 없습니다.

편집 : 아래 답변에서 제안했듯이 나는 똑같은 일을 시도했지만 다른 모든 것을 닫았습니다. 나는 이전보다 더 많은 운이 없었습니다.

이 문제는 정상적인 개발로 돌아 가기 위해 트렁크로 이동할 수 없기 때문에 특히 쇠약 해집니다.



9
나는 간단한 그것을 해결sudo chown -R username directory
스티븐 코윈에게

답변:


84

일반적으로 해당 파일의 핸들을 해제하지 않는 프로세스가있을 때 이러한 종류의 오류가 표시됩니다.

실행중인 항목이 없는지 확인한 다음 결제를 다시 시도하십시오.

참고 : 이는 Git이 설치된 방식과도 관련이있을 수 있습니다 (Windows에서는 msysgit이 C:\Program또는에 설치된 경우 UAC에서 문제가 발생할 수 있습니다. C:\Program Files" msysgit-sh.exe-fork : Permission denied-Vista 64 bit "및 주석 2 참조) 437 호 )

참고 : 아래 그림과 같이 문제의 일반적인 다른 원인은 반드시 연결 해제 할 수없는 파일이 아닌 디렉토리 (잘못된 소유자)의 권한 문제입니다.


1
나는 그것을 정리하기 위해 Ubuntu에 있습니다. 그리고 불행히도 저는이 웹 브라우저와 콘솔에만 있습니다. 여기에는 관련 디렉토리에 대한 하나의 탭이 열려 있습니다 (2 개는 다른 곳에서 열립니다).
Paragon

3
@Paragon : 유닉스에서도 문제를 처리 할 수 ​​있습니다. 그렇지 않으면 이것은 일종의 권한 문제 여야합니다. 그래도 체크 아웃을 강제 할 수 있어야합니다. git checkout -f master
VonC

2
내 경우 +1은 호스트 시스템의 git에서 파일 삭제를 금지하는 활성 VM과 공유하는 폴더였습니다. 날 미치게 만들었으니 힌트를 주셔서 감사합니다!
Jook 2013

1
같은 문제. Process Explorer> Ctrl + F> <filename> 실행-이 파일을 열어 두는 프로세스를 표시합니다.
setevoy

1
GitExtensions는 모두 가져 오려고 할 때이 오류를 표시했습니다. GitKraken도 열었습니다. GitKraken을 닫으면 가져 오기가 모두 오류없이 작동했습니다.
mkaj

99

이 오류가 처음 발생했을 때 내 사용자는 파일에 "쓰기"권한이 있지만 포함 된 디렉토리에는 없습니다. 파일이 포함 된 디렉토리의 권한을 확인하십시오.


95
오, 너무 웃기 네요. 오늘이 대답을 발견했는데 제 대답 이었어요! 그럼에도 불구하고 다시 작동했습니다!
Elijah Lynn

좋아요, Windows 10에서 나에게 발생했습니다. 주 프로젝트 폴더로 이동합니다. 모든 가능한 사용자에 대해 모든 권한을 추가하십시오. 따라서 시스템, 관리자, 사용자에게 모든 가능성이 있습니다. chnages를 적용하십시오. 그리고 그것은 어떻게 든 Windows 10 업데이트에서 작동하는 것처럼 보입니다. 새 사용자를 만들지 않더라도 권한이없는 새 사용자처럼 위협을받습니다. 예를 들어, 저는 S-1-15-32 .....라는 이름이 있습니다. 노트북 잠금을 해제 할 때 사용한 로그인 이름이 아닙니다.
PsychedelicSubstance

30

"링크 해제"는이 경우 본질적으로 "파일 삭제"를 의미합니다.

이 오류는 git 자체가 원인이 아닙니다. 명령 줄 또는 파일 탐색기에서 이러한 파일을 수동으로 삭제하는 것과 유사한 오류가 발생해야합니다.


18
이 오류가 처음 발생했을 때 내 사용자는 파일에 "쓰기"권한이 있었지만 포함 된 디렉토리는 그렇지 않았습니다.
Elijah Lynn

3
@ 엘리야 : 감사합니다! 그게 저를위한 것입니다.
Jesse Lee

4
제 경우에는 문제의 파일이 다른 응용 프로그램에 의해 잠겨 있음을 발견했습니다. 응용 프로그램을 닫으면 파일이 해제되고 체크 아웃이 진행됩니다.
Simon Tewsi 2013 년

25

소유자가 아니기 때문에 액세스 권한이 없습니다.

소유자를 자신으로 변경하여 수정 :

sudo chown -R your_login_name /path/to/folder

2
내 로컬 개발 컴퓨터에서 문제의 파일은 원래 내 로컬 아파치 서버에서 생성되었으므로 www-data 사용자가 소유했습니다. 내 계정으로 잘라 내면 모든 것이 다시 정상적으로 작동했습니다. "Permission Denied"가 진짜 문제였습니다. "좋지 않을 수 없다"는 것은 단지 붉은 청어였습니다.
Dale Anderson

23

drupal 7의 default-settings.php 파일에 문제가있었습니다.이 경우 @rtconner가 말한 것처럼 파일을 삭제하거나 되돌릴 수 없었습니다. 이 파일을 사용하는 응용 프로그램이나 아무것도 없었으며 결국 권한 오류가 발생했습니다.

chmod 777 *폴더에 추가 한 다음 아무 문제없이 되돌릴 수있었습니다.


3
777어떤 폴더에도 원하지 않을 수도 있습니다 . 이것은 내 문제를 해결했지만 해결 된 후 신속하게 기본값으로 다시 변경했습니다. 감사!
Bram


6

내 OS X 컴퓨터에서 "git repack"또는 "git gc"를 실행할 때마다이 문제가 발생했습니다. 심지어 관리자 권한으로 git을 실행할 때도 마찬가지였습니다.이 페이지를 방문한 후 마침내 해결했습니다. http://hints.macworld.com /comment.php?mode=view&cid=1734

해결 방법은 터미널을 열고 git repo로 이동하여 .git 폴더로 이동 한 다음 다음을 수행하는 것입니다.

chflags -R nouchg *

그게 문제 였다면 그 후에 git 명령이 정상적으로 작동합니다.


1
macworld 링크는 더 이상 유효하지 않습니다. 다음은 업데이트 된 심판입니다 : superuser.com/a/40754
webb

5

다음과 같은 경우에도 발생할 수 있습니다.

  1. Docker 컨테이너 내 에서 프로세스를 실행했으며 다음을 수행했습니다 .

  2. 일부 파일은 해당 프로세스에서 생성되었으며 다음과 같습니다.

  3. 파일의 대상은 Docker 호스트에 볼륨으로 마운트됩니다.

  4. gitDocker 호스트에서 실행 중 입니다.


이 경우 커밋하고 실행할 파일을 준비합니다.

git diff --name-only --cached | xargs ls -l 

위의 기준을 충족하는 파일은 다음으로 시작됩니다.

-rw-r--r-- 1 root root ...

그들은 소유하고 root쓸 수 없으며 이는 좋지 않습니다. 실행을 수정하려면 :

 git diff --name-only --cached | xargs -i sh -c 'sudo chown $USER:$USER {}; chmod +w {}'

청소기 솔루션은 아마도 사용하는 것입니다 --user참조 옵션을 도커이부두 노동자의 작성이를 .


4

Intellij 를 사용하는 사람들에게 @rtconner는이 문제가 git에 의해 발생하지 않는다고 말했습니다. IDE가 잠겨 있기 때문에 git은 링크를 해제 할 수 없습니다. 따라서 IDE를 닫은 다음 명령 줄을 통해 통합 (또는 원하는대로)을 시도해야합니다.


그거였다. AndroidStudio는 Intellij이므로 Android 개발에서 발생했습니다.
Reinherd

2

제 경우에는 Windows에서 체크 아웃하기 위해 git repo보다 먼저 폴더 이름에 ":"문자가있었습니다.


2

맥의 터미널에서 난 그냥 이렇게

sudo git checkout. (모든 것을 정리하기 위해)

그리고

sudo git pull origin


2

을 시도 할 때 가상 머신 (Ubuntu 실행) 내부 에서이 오류가 발생했습니다 git reset --hard.

수정은 단순히 git reset --hardOS X 호스트 컴퓨터에서 실행 하는 것입니다.


1

다른 제안은 나에게 효과가 없었지만 다음과 같이 효과가있었습니다.

sudo git reflog expire --expire=now --all && sudo git gc --prune=now --aggressive


1

제 경우에는 Windows 디렉터리가 Dropbox 폴더 아래에 있습니다. Git 관련 문제가 아닙니다. 파일 (이 경우 잠금 파일)이 방금 생성되면 Dropbox에서 동기화를 수행하는 데 1 초 더 걸립니다. 이 시간 동안 파일은 Dropbox에서 사용 중이며 타사 프로그램 (이 경우 Git)은 파일을 삭제할 수 없습니다.

내 해결책은 Dropbox를 종료하여 Dropbox 파일 동기화의 비하인드 스토리 마법을 피하는 것입니다.


0

이 오류가 발생했으며 파일 / 폴더 의 잘못된 "소유자 / 그룹" 으로 인해 발생 합니다 . 이 파일 / 폴더의 "소유자 / 그룹"을 변경하려면 서버 관리자에게 도움을 요청하고 "git pull"을 다시 사용하여 다시 시도해야합니다. 또는 sudoer 인 경우 sudo chown "your owner name / your group name"하고 저장소를 다시 가져 오십시오. 시도해보세요. 100 % 작동합니다!


0

연관된 프로세스 또는 스레드가 실행 중이 아닌지 확인하고 필요에 따라 작업 종료 또는 강제 종료를 수행하십시오.

소유권 권한을 변경했는지 확인하십시오.


0

이에 무슨 일이 생기면 그냥 일반적으로 윈도우 및 사용중인 tortoisegit를 , 그것의 상태 캐시입니다 tortoisegit은 . 해당 프로세스를 종료하면 해제됩니다.


실제로 TortoiseGit의 상태 캐시를 완전히 비활성화 할 수 있으며 일반적으로 권장하는 것입니다. 예상치 못한 파일 잠금의 원인이되는 경우가 많으며 그만한 가치가있는 것보다 훨씬 더 많은 문제가 발생하는 경향이 있습니다. 그냥 사용git status 대신 명령 줄에서.

0

우분투에서 처음으로 작업 한 실제 사용자 이름으로 사용자를 전환해야했습니다. 그것은 그것을 고쳤습니다.


그리고 Windows 사용자는 어떻습니까?
Herr Nentu '2015

OP는 Ubuntu에있었습니다. Windows 스레드에 대해서는 언급하지 않았을 것입니다.
Marc

0

내 git 클라이언트 (GitExtensions)를 항상 관리자 모드로 실행하도록 설정하여 해결했습니다.


0

IntelliJ(14.1.3 Ultimate) 를 사용하는 동안 문제가 발생하여 일부 파일의 변경 사항을 되돌리고 싶었습니다.

Git Bash다른 창에서 열린 닫음으로 해결됨 -다른 되돌리기 시도가 IntelliJ작동했습니다.


0

이 오류가 발생하고 문제는 Eclipse를 시작하고 파일을 만들 때 '관리자 권한으로 실행'했기 때문에 관리자가 소유 한 것입니다 (폴더에서 'ls -la'를 실행하여 알아 차림). 나중에 파일을 숨기려고 할 때 허용되지 않았습니다 ( '파일 연결 해제 불가'및 모든 것). 파일에서 chmod를 수행하는 것이 저에게 수정되었습니다.



0

권한을 제공하고 프로젝트 루트에서 아래 명령을 실행하기 만하면됩니다.

    chmod ug+w <directory path>

0

나는 같은 문제가 있었고 다른 사람들이 제안한 것처럼 몇 가지 대안을 시도했습니다.

그러나 마지막으로 .git 폴더에 올바른 권한을 부여하면 문제가 해결됩니다.

sudo chown -R "${USER:-$(id -un)}" .git

0

제 경우에는 www-data소유자 로 설정하여 권한 문제를 해결했습니다 .

chown -R www-data project_folder_name

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