
git push나 git pull을 할 때마다 계속 아래와 같은 오류가 발생했다.
error: cannot lock ref 'refs/remotes/origin/main': Unable to create
'/your/repo/.git/refs/remotes/origin/main.lock': File exists.
처음에는 권한 문제인가 싶었는데, 찾아보니 Git의 .lock 파일 때문에 발생하는 오류였다.
오류 발생하는이유
Git은 여러 프로세스가 동시에 같은 저장소를 수정하는 상황을 방지하기 위해 작업 시작 시 .lock 파일을 생성한다.
아까 psuh하다가 에러나서 VsCode를 강제종료했는데, 그때 .lock파일이 생긴 것 같다
아래와 같은 작업을 수행할 때:
- git pull
- git push
- git commit
- git merge
Git은 내부적으로 잠금(lock)을 걸어 충돌을 방지한다.
작업이 정상적으로 끝나면 .lock 파일은 자동으로 삭제되는데, 그 사이에 아래에 같은 행동을 한다면 .lock파일이 삭제가 안된다.
- 터미널 강제 종료
- VSCode 종료
- Git 프로세스 크래시
- PC 강제 종료
이 경우 Git이 .lock 파일을 삭제하지 못하고 종료될 수 있다.
그 결과 다음 실행 시 Git은:
"아직 다른 Git 작업이 실행 중인가 보다"
라고 판단하고 작업을 막아버린다.
해결 방법

1. 현재 Git 프로세스가 실행 중인지 확인
먼저 실제로 Git 작업이 실행 중인지 확인한다.
ps aux | grep git
실행 중인 Git 프로세스가 없다면 .lock 파일만 삭제하면 된다.
2. .lock 파일 삭제
아래 명령어로 .lock 파일을 삭제한다.
rm .git/refs/remotes/origin/main.lock
경로에 공백이 있다면 따옴표로 감싸야 한다.
rm "/path/to/your repo/.git/refs/remotes/origin/main.lock"
3. 다시 Git 명령 실행
이후 다시 실행하면 정상적으로 동작한다.
Windows방법
Windows에서는 rm 대신 아래 명령어를 사용한다.
del .git\refs\remotes\origin\main.lock
주의 사항
.lock 파일은 Git의 충돌 방지 장치다.
따라서 실제 Git 작업이 진행 중인데 강제로 삭제하면 저장소가 꼬일 수 있다.
반드시 아래 순서로 확인하자.
- Git 프로세스 실행 여부 확인
- 실행 중이 아니라면 .lock 삭제
- 다시 Git 명령 실행
'Programing' 카테고리의 다른 글
| [error] name '__file__' is not defined (0) | 2026.05.08 |
|---|---|
| Pandas 기초 퀴즈 (0) | 2026.05.07 |
| OpenCV와 Python을 활용한 명함 이미지 보정 (0) | 2026.05.07 |
| 영상처리 입문 (0) | 2026.05.06 |
| SQLAlchemy Column vs Mapped (0) | 2026.04.30 |