Git으로 의존성 파일 이전 버전으로 되돌리기

meek·2024년 11월 8일
0
post-thumbnail

프로젝트 빌드 에러 해결 과정

프로젝트 빌드 중 에러가 발생해 package-lock.json 파일을 이전 버전으로 되돌려 달라고 요청하셨어요. 처음엔 단순히 이 파일만 revert 명령어로 되돌리면 될 줄 알았습니다...

처음 시도한 방법

처음에는 다음과 같은 방법을 사용해 package-lock.json을 되돌려 보려 시도했습니다.

# 1. 변경 이력 확인
git log --follow package-lock.json

# 2. 이전 커밋에서 파일만 가져오기
git checkout [commit-hash] package-lock.json

# 3. 변경사항 커밋
git checkout -b package-lock
git add package-lock.json
git commit -m "fix(build): restore package-lock.json to previous version"

# 4. PR 브랜치 푸시
git push origin package-lock

하지만 첫 번째 명령어부터 오류가 발생했습니다.

# package-lock.json 파일을 찾을 수 없다는 에러
fatal: ambiguous argument 'package-lock.json': unknown revision or path not in the working tree.

문제 원인 파악

ls 명령어로 디렉토리의 파일 목록을 확인한 결과, package-lock.json이 아닌 yarn.lock 파일이 있었어요. 즉, 이 프로젝트는 npm이 아닌 Yarn을 사용하고 있었던 것이였습니다.

여기에서 npm과 yarn의 차이를 짚고 가자면

npm vs Yarn 차이

npm (Node Package Manager)

  • 기본 패키지 매니저로, package-lock.json으로 의존성 관리
  • npm install로 패키지 설치
  • 장점: 기본 패키지 매니저라 안정적
  • 단점: 설치 속도가 느린 편

Yarn (Yet Another Resource Negotiator)

  • Meta에서 개발한 패키지 매니저, yarn.lock 파일로 의존성 관리
  • yarn install로 패키지 설치
  • 장점: 빠른 속도, 안전한 의존성 관리
  • 단점: 추가 설치 필요

최종 해결 과정

이제 yarn.lock을 이전 커밋에서 가져와야 한다는 것을 알았지만, 다시 시도할 때 Updated 0 paths from [commit-hash] 오류가 발생하고 있었습니다. 알고 보니 현재 브랜치가 이미 develop에 머지된 상태라서 PR 이전 커밋에서 yarn.lock 파일을 가져와야 했던 것이였습니다.

최종 해결 방법:

# 1. develop 브랜치 최신화
git checkout develop
git pull origin develop

# 2. 새로운 브랜치 생성
git checkout -b yarn-lock

# 3. 이전 버전 yarn.lock 가져오기
git checkout [commit-hash] yarn.lock

# 4. 변경사항 확인 및 커밋
git status
git add yarn.lock
git commit -m "fix(build): revert yarn.lock to previous version"
git push origin yarn-lock

결국 이렇게 이전 yarn.lock 파일로 되돌린 후에 PR을 올려 문제 해결 완료

profile
hello, world!

0개의 댓글