index.lock 권한 오류 - .git은 루트가 소유하고 작업 트리는 다른 사용자가 소유합니다.

index.lock 권한 오류 - .git은 루트가 소유하고 작업 트리는 다른 사용자가 소유합니다.

내 서버에는 네트워크를 통해 읽을 수 있는 디렉토리를 포함하는 git 저장소가 있습니다. 특정 사용자 디렉토리의 내용은 해당 사용자가 읽고 쓸 수 있지만 디렉토리를 루트가 소유하게 되기를 www원합니다 ..git

루트가 아닌 사용자가 쉬운 복구 방법으로 파일을 확인할 수 있도록 .git 디렉토리를 충분히 읽을 수 있게 만드는 방법이 있습니까? 추가 및 커밋은 허용되지 않습니다(관리자만 실제로 변경 사항을 "수락됨"으로 표시하여 스테이징에서 승격될 수 있음). 이론적으로는 권한이 없는 사용자가 및 와 같은 명령을 읽고 .git변경할 수 있어야 합니다 www. 여기에는 문제가 없습니다. 설정했지만 결제 시도가 실패했습니다.git loggit show

$ git checkout www/some-file-name
fatal: Unable to create '/REDACTED/PATH/.git/index.lock': Permission denied

Git에게 인덱스를 잠그지 않도록 요청할 수 있나요? 다른 콘텐츠를 너무 많이 열지 않고도 인덱스가 잠기도록 허용할 수 있나요? (분명히 .git디렉토리를 쓰기 가능하게 만들 수는 없습니다 . 그렇게 하면 모든 보호 기능이 손실되기 때문입니다.)

참고: 이 문제는 한 번에 하나의 파일에 대해 해결될 수 있습니다.

$ git show HEAD:www/some-file-name >www/some-file-name

따라서 이것은 분명히 근본적인 제한은 아닙니다. 아마도 git checkout분기 전환을 수행하고 있다고 가정할까요? 그러나 이는 와일드카드와 디렉터리 트리를 관리하는 가장 편리한 방법입니다.

편집 : 이것은아니요분기 스위치에 대해 이야기하십시오. git checkout볼 수 있게 하고 싶다단일 파일. 그렇기 때문에 여기에는 명백한 대답이 적용되지 않습니다.

답변1

매우 모순적인 질문을 하셨습니다. 저장소에서 실행하려면 git checkout사용자에게 .git폴더에 대한 쓰기 권한이 필요합니다.

네트워크 서버가 액세스할 수 없도록 네트워크 루트 위에서 프로젝트를 추적할 수 있습니다.

그렇지 않으면 저장소를 다른 곳에 복제하고 필요한 저장소를 네트워크 루트에 심볼릭 링크하면 됩니다.

관련 정보