Search
👤

커밋이 안되는 이유는 권한 때문?

Created
2023/03/04
Tags
Git
Category
Troubleshoot
Parent item
Sub-item
2 more properties

커밋이 왜 안되지?

VScode 터미널에 git push를 입력하고 커밋을 하려고 했더니, 아래와 같은 fatal error를 만났다.
Git: fatal: Unable to create '/Users/yeonsuchoi/TIL/.git/index.lock': Permission denied
JavaScript
복사
찾아보니, 커밋을 하고자 하는 repository의 권한을 변경해 주어야 한다고 하여, sudo 명령어를 사용했다. 위키백과에 따르면, sudo는 'superuser(root user) do' 혹은 'substitue user do'의 줄임말로, 주로 우분투, 리눅스, 맥에서 볼 수 있는 명령어라고 한다.
따라서 sudo 를 입력하면 관리자 권한을 부여해 명령어를 실행하기에, password를 입력하는 과정을 거칠 것이다. 이와 같은 문제 상황에 대해 stackoverflow에서 찾아보니, 아래와 같이 해결 방법을 알려주었다.

해결 방법

1. git내 폴더와 하위 폴더 파일의 소유권을 변경한다.

여기서 chown은 change owner의 약자로, 해당 파일이나 디렉토리에 대한 소유권을 변경하는 명령어다. 더불어 -R은 recursive 재귀적으로, 즉 해당 명령이 포함된 디렉토리와 함께 하위 디렉토리 파일이 있는 경우에도 재귀적으로 작동한다는 것을 의미한다.
// 아래 명령어를 복사 후, owner과 group을 채워 넣어 terminal에 입력하면 된다. sudo chown -R <your username>:<your usergroup> .git
JavaScript
복사
// 나의 경우 아래와 같이 해당 repository의 경로를 입력해 주었다. sudo chown -R yeonsuchoi/TIL/ .git
JavaScript
복사

2. Password를 입력한다.

이때, 본인인 사용하고 있는 기기 접속 시 입력하는 패스워드를 입력하면 된다. 참고로, 터미널에서 패스워드 입력 시 눈에 보이지 않기에 입력 후 Enter를 입력하면 다음 단계로 넘어갈 것이다.

3. 해당 폴더의 권한을 수정한다.

'775'는 읽기쓰기 권한만 허용하겠다는 의미로, 권한을 올려주면 된다.
sudo chmod -r 775 .git
JavaScript
복사

4. 다시 terminal에서 푸시를 하면 정상적으로 커밋이 된다!

git push
JavaScript
복사