git rebase :“오류 : 'file'통계를 할 수 없습니다 : 권한이 거부되었습니다.”


342

git을 사용하고 있으며 작은 커밋과 큰 커밋이 있습니다. 나는 git rebase두 커밋을 밀기 전에 함께 스쿼시하는 것을 사용하기로 결정 했습니다. (나는 전에 이것을 한 적이 없다.)

그래서 나는했다 :

git rebase -i HEAD~2

이것은 나에게 편집자를 주었다. 거기서 나는 이전 커밋을 고르고 나중에 커밋을 선택했다. 내가 저장했을 때, 자식은 말했다 :

오류 : ' filename '을 통계 할 수 없습니다 : 권한이 거부되었습니다

나중에 커밋에 sha1을 적용 할 수 없습니다 ... 해당 커밋의 초기 텍스트 줄

지금:

  • 내가 할 때 커밋이 나타나지 않습니다 git log.
  • git status "현재 지점에 없습니다"라고 말합니다.
  • 하나의 파일은 수정 된 것으로 색인에 나열되고 두 개의 파일은 추적되지 않은 것으로 나열됩니다. 내 첫 번째 커밋에는 파일이 하나 뿐이고 두 번째 커밋에는 수십 가지가 있습니다.

어떻게 된 거예요!? 어떻게 고치나요?


10
우연히 Windows에서 git을 사용하고 있습니까?
CB Bailey

예. DOS 창에서 명령을 실행합니다.
Ryan Lundy

2
바이러스 검사기를 실행하고 있습니까? 때로는 품질이 좋지 않은 바이러스 검사 프로그램으로 인해 이와 같은 문제가 발생합니다.
Greg Hewgill

53
git checkout (허용 된 답변에서 제안한대로 중단 할 수 없음)에 문제가 있었지만 모든 IDE를 닫으면됩니다. 두 번째 답변은 허용 된 답변이어야합니다.
plus-

1
@IanGrainger, 귀하가 참조하는 답변이 수락 된 답변 후 8 개월 후에 게시되었습니다 . 모든 질문에 대해 허용 된 답변을 변경하려면 몇 개월에 한 번씩 방문하여 모든 질문을 방문해야합니까? 투표 버튼은 이유가 있습니다. 가장 많이 답한 답변이 허용 된 답변보다 더 도움이되는 경우 사용하십시오. 누가 널 막고있어? 그러나 나는 그것이 도움이 되었기 때문에 내가 한 대답을 받아들였으며, 나는 그 질문을 한 사람입니다.
Ryan Lundy

답변:


195

Windows 에서이 오류 만 보았으며 의미하는 것은 패치를 적용하려고 할 때 git이 파일을 수정하지 못하도록 차단 한 것입니다.

Windows는 실제로 필요하지 않을 때 프로세스에 파일에 대한 독점적 액세스 권한을 부여하는 경향이 있습니다. 과거 바이러스 검사기는 의심의 소스 중 하나 였지만 이것이 결정적인 증거는 아닙니다.

아마도 가장 쉬운 방법은 다음에 일어나지 않기를 희망하고 중단하고 다시 시도하는 것입니다.

git rebase --abort

git apply커밋 git이 실제로하기 전에 실제로 무엇을하려고했는지에 대한 지식과 사용을 시도 할 수 git rebase --continue있지만 모든 정직에서 나는 이것을 권장하지 않습니다. 내가 시도한 것을 보았던 대부분의 시간은 우연히 무언가가 빠지거나 엉망이 될 가능성보다 낫습니다.


6
@Kyralessa : 흠, 재부팅을 시도 했습니까? 파일이 영구적으로 파일을 잠그는 경우 재부팅 후 (또는 파일을 해제하는 약간 덜 과감한) 파일을 git checkout -- previously-locked-file백업하고 실행할 수 있어야합니다 .
CB Bailey

51
글쎄, 나는 정확히 무슨 일이 일어 났는지 확실하지 않지만 VS 2010은 파일을 잠그고 있었다 (.xml doc 파일이기 때문에 홀수). 프로세스 탐색기는 해당 파일을 잠그는 것을 찾지 못했지만 VS를 종료 한 후 git checkout파일을 다시 가져 오는 데 사용할 수 있었으며 ( git status삭제 된 상태) 이제 리베이스 / 스쿼시를 시도하기 전에 모든 것이 돌아 왔습니다. 이 시점에서 약간 불안하지만, 다시 시도해야 할 수도 있습니다.
Ryan Lundy

3
후속 조치, 많은 달이 지나서 나는 다시이 문제를 겪지 않았다. 대화식 rebasing을 포함하여 rebasing은 잘 작동했습니다. 그것은 순간적인 VS 파일 잠금 결함이었습니다.
라이언 런디

49
Visual Studio 2010을 닫으면 문제가 해결되었습니다.
Trev

4
Atom은 분명히 파일을 잠급니다. 다시 시작하면 문제가 해결되었습니다.
Augustin Bralley

653

편집기, 탐색기 창, 명령 프롬프트 및 FTP 프로그램과 같이 폴더가 열려있는 모든 프로그램을 닫으십시오. 이것은 항상 Windows의 문제를 해결합니다.


72
같은 오류가 발생했습니다. 방금 비주얼 스튜디오를 닫았고 모든 것이 효과가있었습니다.
jacobsimeon

6
WinLess LESS-> CSS 변환기가 백그라운드에 숨어 있음을 기억하기 전에 생각할 수있는 모든 것을 닫았습니다.
Michael Martin-Smucker 2016 년

6
Visual Studio는 병합하려고 할 때 너겟 패키지를 잠갔습니다. Closing VS가 나를 위해 일했습니다.
CodeHxr

7
Windows에서 본이 오류의 가장 일반적인 원인은 Visual Studio가 파일을 잠그는 것입니다. 규정에 따라 분기, 병합 등을 전환하기 전에 VS를 닫으십시오.
longda

5
"나도"Atom에 대한 답변입니다. 파일과 디렉토리를 잠그는 것 같습니다. 닫으면 문제가 해결됩니다.
ajm

277

IDE (VISUAL STUDIO / ATOM 등)를 닫으십시오. 작동 할 수도 있습니다


1
IntelliJ에서 실행중인 Tomcat 서비스를 중지하면 나에게 도움이되었습니다. IDE를 다시 시작하는 것보다 약간 더 쉽습니다.
Phil Carter

나는 또한 Git Bash 창을 열었다.
Vince I

소금 가치가있는 IDE는 저장소에 아무것도 잠그지 않아야합니다 ... 엄지 손가락!
LightCC

Windows 10에서 Atom을 사용하여 임시 지점에 체크인 한 후이 문제를 해결하십시오. Atom을 닫았다가 다시 열면 문제가 해결되었습니다.
mickburkejnr

24

내 컴퓨터에서 이것을 볼 때 단지 "일부 프로세스가 파일을 연"것보다 나쁩니다. 파일의 실제 소유권은 I (관리자 권한으로 실행)가 재부팅 후에 만 ​​파일에 액세스 할 수있는 지점까지 연결됩니다.

내가 알 수있는 가장 가까운 것은 IIS가 문제의 일부입니다. 많은 파일을 수정 해야하는 두 가지 주요 지점을 전환하면 git은 IIS가 파일이나 디렉토리를 사용하려고하는 동안 파일이나 디렉토리 (일반적으로 DLL)를 삭제합니다. 이 시점에서 IIS 프로세스는 디스크의 파일을 잠겨 있고 아무도 소유하지 않은 것으로 버전을 자동으로 덮어 씁니다.

이 시점에서 IIS를 중지해도 작동하지 않습니다. 내가 찾은 최선의 방법은 다시 부팅하는 것입니다. 앞으로 주요 지점을 변경하기 전에 IIS를 중지해야합니다.

나는 그것이 실제로 질문에 대답하지는 않지만 다른 사람들에게 도움이 될 수 있음을 알고 있습니다.


안녕, 마이크 ... 우리도 똑같은 문제가 있지만, 파란색에서 나왔습니다. 우리는 IIS가 실행되는 많은 프로젝트에서 동일한 프로세스를 사용해 왔으며 아무런 문제가 없었습니다. 하지만 언젠가는 ... 배플과 좌절이 일어나기 시작합니다. 이 글을 쓴 후 더 이상 배웠습니까?
Ethan Brown

통찰력 Mike에게 감사드립니다. 필자의 경우 이전 분기와 다른 바인딩 URL을 가진 ASP.NET MVC 프로젝트를 사용하여 이전 분기를 확인하면 Visual Studio와 IIS가 프로젝트의 일부 파일에 대한 잠금을 보유하게되었습니다. IIS에서 적절한 응용 프로그램 풀을 중지하면 잠금이 제거되었습니다.
fundead 2016 년

IIS도 저에게 범인이었습니다. 이것이 팝업 iisreset되면 파일 잠금을 빠르게 해제하는 것처럼 보입니다.
alexm

OneDrive에서도 동일한 일이 발생합니다. OneDrive에 저장된
리포지토리의

이것은 win10에서 나에게도 발생하여 재부팅이 필요하지만 iisreset솔루션을 테스트하지 않았습니다 .
qdread

17

Windows에서는 해당 파일을 차단하는 TortoiseGIT 프로세스 일 수 있습니다. 작업 관리자를 열고 TGitCache.exe 프로세스를 종료하십시오 .


2
내 경우에는 TortoiseGit을 사용하지 않지만 알아두면 좋습니다. 나는 단지 명령 행을 사용한다.
Ryan Lundy

13

방금이 답변 스레드를 우연히 발견했습니다-이 오류는 가짜 오류입니다. # error : stat 'reddit / app / views / links'stat cannot cannot : Permission denied

병합하려고 할 때 이것이 전부입니다. 나는 몇 가지 답변을 읽은 다음 깨달았습니다 .Atom이 될 코드 편집기를 닫는 것만으로도 충분합니다.

편집기를 닫으면 "git merge"를 다시 실행하고 붐을 일으켰습니다.

무의미한 오류 : (


감사합니다! 매일 목록에 '올바른'답변이 표시되는 것은 아닙니다. 정답으로 표시하는 것이 좋습니다. 현재 작업을 중단하지 않고 실제 문제를 해결하는 것이 좋습니다.
Nikhil Kuriakose

12

vscode를 사용하는 경우 터미널을 종료하고 새 터미널을여십시오. 다른 터미널도 닫을 수 있습니다


이것은 프로세스 잠금 또는 무언가처럼 보였습니다
Mike Upjohn

10

이것은 때때로 Windows에서 나에게 발생합니다.

오류 : 'filename'통계를 할 수 없습니다 : 권한이 거부되었습니다

대부분의 경우 비트 bash 인스턴스가 여러 개 열려 있고 git bash 인스턴스 중 하나가 내가 가져 오는 원격 브랜치에 존재하지 않는 디렉토리에 있습니다.

하나의 git bash 인스턴스를 제외한 모든 인스턴스를 닫으면 문제가 해결됩니다.


9

사용하는 IDE (사용하는 경우)도 방해가되었을 수 있습니다. 그것이 QtCreator를 사용할 때 나에게 일어난 일입니다.


PhpStorm을 사용하여 저와 같은 경우였습니다. 다시 시작하면 오류가 해결되었습니다.
lancemonotone

7

Win 10에서 SourceTree를 사용하여 Atom 편집기를 닫아 문제를 해결했습니다.

오류 재현 :

  1. 지점 B에서 Atom을 사용하여 md 파일을 작성하고 저장하고 커미트하십시오.
  2. 지점 A로 전환하고 서버에서 새 커밋을 가져옵니다.
  3. 다시 전환하십시오. Opps, "error : stat 'file': Permission denied"라고 표시되어 있습니다.

6

SublimeText를 사용 중이고 프로그램 구매를 요청하는 팝업 창이 닫히지 않은 경우에도 발생할 수 있습니다.


1
또한 프로젝트 / 파일 트리를 열어서 Atom과 함께했습니다
Hal

1
@Hal과 마찬가지로 내 문제는 Atom과 관련이 있습니다. 한 지점의 폴더가 다른 지점에 없었기 때문입니다. Atom을 닫으면 문제가 해결되지만 프로젝트 트리를 축소하여 (폴더를 숨길 수도 있음) 작동합니다.
jsalwen

6

Prepros 또는 Codekit과 같이 프로젝트를 시청하는 사전 처리 소프트웨어 / 응용 프로그램이있을 때 종종 발생합니다. 또한 Atom 및 Sublime (및 메모장 ++)도 프로젝트의 파일을 현재 편집중인 경우이 문제가 발생할 수 있습니다.

이 문제를 해결하는 가장 쉬운 방법은 프로젝트 파일이 열려있는 항목을 닫고 분기를 병합 한 다음 다시 열어서 새로 고치는 것입니다. 또한 프로그램이 더 이상 발생한 변경 사항을 인식하지 못하여 프로젝트를 수동으로 새로 고치도록하는 문제를 피할 수 있습니다.


1
오! 나는 백그라운드에서 느릅 나무를 달리고있었습니다. 이것은 나에게 엄청난 두통을 저장했다.
frostymarvelous

6

웹팩을 실행중인 경우 종료하십시오. IDE도 종료하십시오. 그 일을 한 후에 잘 작동해야합니다.


4

나는 비슷한 문제가 있었다. 그러나 해결하는 것은 매우 간단했습니다. Windows 컴퓨터에서 파일 탐색기에 한 지점에는 존재하지만 체크 아웃 한 다른 폴더에는 폴더가 열려 있지 않았습니다. 파일 탐색기를 닫으면 문제가 해결되었습니다.


4

나는 방금 Win 7에서 이것을 가지고있다.

$ git stash pop error : 'parentFolder / subfolder'를 통계 할 수 없습니다 : 권한 거부 오류 : 'parentFolder / subfolder'를 통계 할 수 없습니다 : 권한이 거부되었습니다

진단:

1> 나는 하위 폴더로 갔는데 거기에 있으며 삭제할 수 없습니다!

2> "프로세스 탐색기"사용-> 찾기-> 핸들 및 DLL 찾기-> "하위 폴더"이름을 입력하고 검색하십시오.

결과 : XMLSpy가 xml 중 하나를 열고 XML Spy를 닫은 후 다시 팝업을 시도하면 작동합니다.


4

IntelliJ 통합 터미널 내부에 rebasing하면서 Windows에서 나에게 일어났다 . Git bash 클라이언트 인스턴스가 병렬로 실행되고 있음을 알았습니다 .

Git bash를 닫으면 문제가 해결되었습니다.


2

이 문제가 발생하면 편집자 Intellij가 발생했습니다. 내부 버전 제어의 일부로 모든 숨겨진 git 파일을 통과하고 잠갔습니다. (다양한 이유로 Intellij와 함께 제공되는 git 플러그인을 사용하지 않았습니다 ...)

그래서 관리자로 일반 dos 창을 열고 디렉토리로 변경하고 실행했습니다.

attrib -R /S

파일 잠금이 제거되고 그 후 모든 것이 작동했으며 GitHub Windows 클라이언트를 사용하여 변경 사항을 동기화 할 수있었습니다.


2

위의 "Close Visual Studio"답변에 동의합니다.

그러나 추가 단계 나는 폐쇄 Visual Studio를 수동으로하는 것이 었습니다 거라고 후에도해야 할 일을했을 킬 (kill) "으로 Devenv.exe" 작업 탐색기에서 비주얼 스튜디오 과정을. 내가 이것을 한 후에 gitbash에서 다시 실행할 수있었습니다.

자식 풀

"stat filename 파일 이름 "오류가 사라졌습니다. 아마도 닫은 후에도 프로세스를 더 오랫동안 열어 놓은 Visual Studio 확장 때문일 수 있습니다.


2

방금이 문제가 발생했습니다. 문제는-파일을 열었을 때 rebase 후 제거 / 교체 (더 이상이 파일이없는 지점이 있음)하면 git 시스템이 손상됩니다. 그래서 열린 모든 파일을 닫은 다음 다른 지점에서 체크 아웃하려고했습니다.


2

다른 모든 대답에서 말했듯이 디렉토리를 잠글 수있는 모든 응용 프로그램을 닫는 대신 대체 솔루션은 모든 것을 닫지 않고 파일 / 디렉토리의 잠금을 해제하는 유틸리티를 사용하는 것입니다. (Visual Studio를 다시 시작해야하는 것이 싫습니다)

LockHunter는 내가 사용하는 것입니다 : https://lockhunter.com/ 다른 사람들도있을 수 있지만이 것은 나에게 큰 도움이되었습니다.


1

Git Bash 버전 2.9.0.windows1을 실행하는 Windows 10 64 비트와 동일한 문제 Atom을 내 편집기로 사용합니다.

이것은 나를 위해 일했다 : 나는 Git 소프트웨어 폴더 (나를 위해 이것은 C : \ Program Files \ Git이었다)를 Windows Defender 제외에 추가했다.

제외가 추가 된 후 git checkout 'file'정상적으로 작동했습니다.


1

이 오류는 또한 이전 git 작업으로 인해 파일이 여전히 "잠긴"사실로 인해 발생할 수 있습니다. Windows 파일 시스템 계층의 작동 방식과 관련이 있습니다. 한 번 이것에 대한 좋은 설명을 읽었지만 어디에 있는지 기억할 수 없습니다.

그러나이 경우 기본적으로 경쟁 조건이므로 중단 된 rebase 프로세스를 계속 하면 됩니다 . 불행히도 이것은 항상 나에게 일어 났기 때문에 나는이 작은 위험한 도우미를 썼다 .

#!/bin/sh

set -e

git checkout .
git clean -df
git rebase --continue

확실 git rebase --edit-todo하게 확인하려면 적용 할 다음 커밋이 실제로 적용되지 않은 커밋인지 확인하는 데 사용할 수 있습니다. 사용 git clean -dn당신이 중요한 파일을 삭제하지 마십시오 만들 수 있습니다.


1

Windows에서 Photoshop을 사용할 때 나에게 일어난 일 : 이미지를 저장 한 다음 지점으로 전환하면 (이미지가 열린 상태에서 Photoshop을 떠나는 경우) git 오류가 발생했습니다. 포토샵에서 이미지를 닫고 다시 시도하십시오



1

저장소와 관련된 w3wp.exe 프로세스를 종료하면이 문제가 해결되었습니다.


1

제 경우에는 webpack dev 서버가 뒤에서 실행되었습니다.


0

VS1013이 8.1을 타겟팅하는 지점에 있고 8.0 지점을 체크 아웃하려고 할 때이 오류가 발생했습니다. VS로 다시 탭하고 UpdateAll에 허용해야했습니다. 그런 다음 8.0 분기를 오류없이 체크 아웃 할 수 있습니다.


0

같은 오류가 발생했을 때 Git Shell을 사용하는 Windows 컴퓨터에도있었습니다.

그러나 당시에는 여러 개의 Git 터미널이 열려있었습니다.

첫 번째 터미널은 위에 게시 한 오류를 수신했으며 다른 터미널은 이전에 grunt serve yeoman (아래 링크)에서 터미널 명령을 . 두 번째 터미널은 로컬 서버 인스턴스를 호스팅하기 위해 열려 있어야합니다.

진행중인 프로세스를 실행하는 모든 터미널 창을 종료하면 오류가 사라질 수 있습니다.

적어도 그것은 나를 위해 일한 것입니다. 두 번째 터미널 창을 종료 한 후 다른 분기를 쉽게 체크 아웃하고 파일을 조작 할 수 있습니다.

그런트 서브 커맨드-Yeoman.I / O
http://yeoman.io/learning/


0

방금이 문제에 부딪 쳤습니다. 여기에 대한 답변 중 하나가 나를 위해 이것을 해결하기 위해 발생했습니다.

결국 마스터 브랜치로 다시 전환했을 때 존재하지 않는 것처럼 보이는 브랜치에 추가 된 너겟 패키지가되었습니다. 병합을 한 후에 newtonsoft ... xml을 통계 할 수 없습니다. 문제의 파일로 이동하여 열었지만 Windows에서 파일을 찾을 수 없다는 오류가 발생했습니다.

이 문제를 해결하는 방법은 파일을 마우스 오른쪽 버튼으로 클릭하고 (작동했지만 창을 찾을 수 없기 때문에 파일을 열 수 없습니까 ???) 다시 병합하려고하면 문제가 해결되었습니다.

아주 이상한.

이것이 나중에 누군가를 돕기를 바랍니다.


0

프로젝트 디렉토리에 액세스하는 텍스트 편집기를 종료 한 다음 마스터 브랜치에 병합하려고 시도했습니다.

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