Git 원격 참조 잠금 오류 진단 및 복구 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- 개발자 및 DevOps 엔지니어
- 난이도: 중급 이상 (Git 내부 동작 원리 이해 필요)
핵심 요약
- 원격 참조 잠금 오류(error: cannot lock ref 'refs/remotes/origin/...')는 동시 작업 또는 불완전한 Git 작업으로 인해 발생
git remote prune origin
명령으로 이유 없는 로컬 참조(stale refs) 삭제 가능rm -rf .git/refs/remotes/...
로 잠금 파일 직접 제거 후git fetch
재시도git gc --prune=now
및git fsck --full
으로 리포지토리 건강 상태 검증
섹션별 세부 요약
1. 원격 참조 잠금 오류 원인
- Git은 참조(ref) 업데이트 시 잠금 파일(lock file) 생성
refs/remotes/origin/...
경로에 이미 존재하는 잠금 파일로 인해git pull
실패git remote show origin
명령으로 이유 없는 로컬 브랜치(stale branch) 확인 가능
2. 문제 진단 및 해결 단계
git remote prune origin
실행:refs/remotes/origin/...
경로의 이유 없는 로컬 참조 제거! [rejected] feature/... -> origin/... (fetch first)
메시지 해결git fetch
실패 시git reflog expire --expire=now --all
로 이력 정리
3. 복구 방법
rm -rf .git/refs/remotes/origin/...
명령으로 잠금 파일 직접 삭제git checkout main
후git fetch origin
재시도git checkout -b feature/... origin/...
로 브랜치 재생성
4. 예방 및 유지보수
git gc --prune=now
명령으로 불필요한 객체 및 참조 정리git fsck --full
명령으로 리포지토리 일관성 검증git pull --rebase
사용으로 병합 충돌 최소화
결론
cannot lock ref
오류 발생 시git remote prune
→git fetch
순서로 복구git gc
및git fsck
정기 실행으로 리포지토리 오류 사전 예방rm -rf .git/refs/remotes/...
명령은 최종 수단으로 사용 (동기화 문제 발생 시)