[giruboy]github 협업 중 conflict 없는 PR을 위한 문제해결

최길우·2022년 10월 7일
0

Project : Share-Blog

목록 보기
3/6

<개요>

Git을 이용한 협업 workflow에는 여러가지 방법이 있는데, 현재 우리가 사용하고 있는 방법은 Feature Branch Workflow 이다.

Feature Branch Workflow의 핵심은 기능별 브랜치를 만들어 작업하는 것이다. master브랜치는 항상 버그 프리 상태로 유지하며, 병합시 권한을 가진 사용자가 풀 리퀘스트를 적용할 수 있다.

현재 우리의 원격 저장소의 branch는 다음과 같다,

  • ops-main : 서버 Release를 위해 사용되는 브랜치(=master 브랜치)
  • dev-main : 개발용 브랜치
  • 기타 branch (특정기능개발용, 버그 수정용, 문서수정용, etc.)
  • 내 이름의 branch : 아직 Github와 개발에 미숙하여 이를 위한 연습용 branch

따라서 최종 개발을 위해 기타 branch -> dev-main로 먼저 PR(Pull Request) 후 문제가 없는 버그 프리 상태가 되면 다시 dev-main -> ops-main으로 최종 PR을 하여 merge하고 있다.

문제점

하지만 나의 경우 내이름의 branch로만 기능구현에 집중하느라 수많은 commit과 push를 하였음에도 dev-main에 PR을 한번도 하지 못하였는데, 현재 상태에서 PR을 하게되면 원격 저장소의 conflict가 복잡하게 생기게 된다. 처음에는 git pull 기능을 이용하여 특정기능용 branch를 생성하려고 했는데 해보고 나니 내 개인 branchdev-main branch의 코드가 섞여 문제가 있었따. 그래서 다음과 같은 방법을 사용하여 해결하였다.

  1. 현재 원격 저장소의 dev-main branch를 clone하여 로컬 저장소로 가져오기. 아래와 같은 명령어로 특정 branch를 로컬 저장소로 가져올 수 있다.(명령어의 <>는 무시하고 입력한다)
git clone -b dev-main <github url>
  1. working 디렉토리를 dev-main으로 전환하여 잘 clone됐는지 확인하기
git checkout dev-main
  1. PR을 위한 특정 기능용 branch 로컬 저장소에 생성 후 전환하기 (현재 나의 경우 'feat_logo_navigation'이란 이름의 branch를 생성하였다.)
git checkout -b feat_logo_navigation
  1. 원하는 기능 구현을 위해 코드를 수정한다.
  2. git add .
  3. `git commit -m "커밋제목"
  4. 현재 'feat_logo_navigation'이란 branch는 원격 저장소에는 존재하지 않으므로 push와 함께 생성해주면 된다.
    git push origin feat_logo_navigation
  5. 위의 명령어로 Github를 확인 해 보면 branch 생성과 함께 위에서 한 commit이 등록되어 있다.
  6. 이제 PR 요청을 하고 최종 승인을 받으면 dev-main에 merge되고 이에 문제가 없는게 확인이 되면 최종적으로 ops-main에 또 PR을 하여 최종 merge하게 된다!
profile
성장하는 개발자

0개의 댓글