[에러 일지] 브랜치 분기, Pull Request의 Resolve conflicts 버튼 비활성화

uxolrv·2022년 10월 28일
0
post-thumbnail

❗️ 문제 1 : 브랜치 분기

기존 브랜치

main : 배포를 위한 최종본
dev : 개발을 위한 브랜치
feat/fe : 하나의 기능을 구현하는 브랜치 (fe)
feat/be : 하나의 기능을 구현하는 브랜치 (be)

기존에는 브랜치를 4개로 나눠서 feat/fe를 프론트엔드가 공통으로 사용하였으나, 각자의 작업 속도가 달라서 dev로 Pull Request할 주기를 잡지 못했고, 그로인해 feat/fe에만 작업물이 쌓이게 되는 것을 확인하였다.




✨ 해결

변경 후 브랜치

main : 배포를 위한 최종본
dev : 개발을 위한 브랜치
feat/팀원1 : 하나의 기능을 구현하는 브랜치 (fe)
feat/팀원2 : 하나의 기능을 구현하는 브랜치 (fe)
feat/팀원3 : 하나의 기능을 구현하는 브랜치 (fe)
feat/팀원4 : 하나의 기능을 구현하는 브랜치 (fe)
feat/be : 하나의 기능을 구현하는 브랜치 (be)

개인 별로 feat branch를 나누어, 아래와 같은 사이클을 반복하며 작업을 진행하기로 하였다.

1. feat/개인 branch를 개인 별로 하나씩 가진다.
2. feat/개인 branch에서 하나의 컴포넌트 구현이 끝날 때마다, dev로 Pull Request한다.
3. 프론트엔드 전체 팀원이 코드리뷰를 마치면, dev branch에 merge한다.
4. dev branch를 feat/개인 브랜치로 pull한 후, 작업을 재개한다.










❗️ 문제 2 : README.md 충돌

This branch has conflicts that must be resolved

Conflicting files
README.md

기존에 프론트엔드 팀원이 함께 작업하던 feat/fe 브랜치에서 dev 브랜치로 Pull Request하던 중,
dev 브랜치에 이미 존재하던 README.md와 feat/fe 브랜치의 README.md의 내용이 달라 conflict가 발생하였다.




✨ 해결

해당 문제는 다행히 Pull Request 페이지 하단에 있는 Resolve conflicts로 쉽게 해결하였다!










❗️ 문제 3 : Resolve conflicts 버튼 비활성화

This branch has conflicts that must be resolved

Conflicting files
README.md

백엔드 feature에서 dev 브랜치로 Pull Request하던 도중, 마찬가지로 README.md conflict가 발생하였다.
다만... Resolve conflicts가 비활성화되어 있었을 뿐...



Tip: If the Resolve conflicts button is deactivated,
your pull request's merge conflict is too complex to resolve on GitHub.
You must resolve the merge conflict using an alternative Git client,
or by using Git on the command line. 

Github Docs에서 찾아보니 해당 충돌이 웹에서 해결하기에는 너무 복잡하여 CLI에서 해결해야 한다는 것을 알아냈다.

그저 README.md 파일 내용이 다를 뿐인데, 뭐가 복잡하다는 건지...

백엔드 팀원분들이 README.md 파일 내용을 똑같게 수정도 해보고, 삭제도 해보시고 이것저것 다양한 시도를 하셨는데도 충돌이 해결되지 않으신 상태였다 ㅜㅜ

일단 번뜩 든 생각은 feat/be에서 dev 브랜치를 pull한 후, PR하면 해결되지 않을까? 싶어서 시도하였으나, dev에 merge했던 client 폴더만 추가되어 더 복잡해졌을 뿐... 전혀 해결되지 않았었다.




✨ 해결

git reset --hard 커밋아이디 // 이전 커밋으로 되돌린다.
git push origin feat/be // 되돌린 커밋을 push한다.

확인해보니, 충돌은 root 폴더의 README.md에서 발생하였는데, server 폴더의 README.md를 수정하고 있었다는 것을 확인하였다!


  1. 우선 README.md 파일을 수정한 커밋이 너무 많아 README.md 파일을 수정하기 전으로 되돌렸다.
  2. 되돌아간 현재 상태를 feat/be에 push하였다.
  3. README.md를 feat/be 브랜치의 root 폴더에 추가하였다.
  4. Pull Request의 Resolve conflicts가 활성화되어 충돌을 해결하였다!

그 전에 Resolve conflicts 버튼이 비활성화 되어있었던 건 아마 같은 파일안의 변동 사항은 웹에서 해결할 수 있지만,
없는 파일을 Github 웹 에디터에서 만들 수는 없었기 때문이 아닐까 싶다. 🤔










오늘 하루종일 에러를 너무 많이 봐서 혼란스러웠지만...🥲
그래도 이번 주에 봐서 다행이다 싶었다!

담에 또 같은 에러를 만났을 때 빠르게 해결할 수 있도록 에러일지 정리를 성실히 해야겠다👊










profile
안녕하세연🙋 프론트엔드 개발자입니다

0개의 댓글

관련 채용 정보