프로젝트 빌드 중 에러가 발생해 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의 차이를 짚고 가자면
package-lock.json
으로 의존성 관리npm install
로 패키지 설치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을 올려 문제 해결 완료