얼마 전, 작업을 하던 중 브랜치를 왔다갔다하면 의존성을 찾을 수 없다는 오류가 발생하기 시작했다. 문제 자체는 브랜치를 옮긴 후 node_modules
와 package-lock.json
파일을 삭제 후 재설치하면 해결되긴 하였으나 시간이 너무 오래 걸려 다른 해결책이 필요하다고 느꼈다.
당시 상황을 그림으로 표현해보았다. 새로 추가될 보드
기능이 오랫동안 작업이 끝나질 않았고, 해당 작업을 진행하다가 급하게 추가되어야 할 기능이 있으면 새로운 feature 브랜치(1)를 통해 추가되었다. 이 과정에서 외부 라이브러리를 설치하기도 하였는데, 보드 작업을 진행하던 브랜치(2)에도 설치된 라이브러리가 있어서 (1)과 (2)를 옮겨다니면 의존성 문제가 발생하는 것 같았다.
극단적인 해결방법으로 node_modules를 사용하지 않는 yarn berry로 마이그레이션해야하나 고민하고 있었는데 멘토님께서 해결책을 알려주셨다.
yarn berry가 궁금하다면?
현재 다담다 프로젝트는 git flow를 사용하여 develop 브랜치에서 feature 브랜치를 따 작업 후 다시 merge하는 방식을 사용하고 있다. 여기서 멘토님이 제안해주신 방법은 역으로 develop을 feature에 합쳐서 dependency를 해결하는 방법이었다.
문제는 해당 feature 브랜치가 너무 예전에 땄던 브랜치이다보니 현재 develop 브랜치와 다른 점이 너무 많았다. 이로 인해 심한 충돌이 발생하여 CLI 명령어를 통해 conflict를 resolve해야 한다고 떴다. 평생 GUI만으로 git을 다뤄와서 처음엔 겁먹었지만 github에서 시키는 대로 하니 큰 어려움 없이 잘 끝났다. 다만, conflict가 난 부분은 다음과 같이
<<<<<<< HEAD
open an issue
=======
ask your question in IRC.
>>>>>>> branch-a
표현되는데, 여기서 conflict를 해결하고 싶은 부분만 살리고 다른 부분을 직접 지워야 해서 실수하기 쉽다. 조심해야 한다. (경험담이다.🥲) 우여곡절 끝에 성공적으로 머지할 수 있었고, 이제 브랜치를 옮겨다녀도 의존성 문제가 생기지 않는 코드가 되었다!
곧 보드가 추가될 다담다 프로젝트가 궁금하다면? 다담다 바로가기