GitHub

주방·2023년 4월 30일
0

MovieRank

목록 보기
3/8

배경

  1. MVVM pattern 까지 작업을 진행하였음.
  2. 그러나 작업을 하면서도 누구에게도 코드에 대한 리뷰를 받지 않고, 진행하다보니 코드 적용이 과연 적절할까? 라는 의문이 들기 시작했음.
  3. 이에 개발자 동료에게 프로젝트 실행 배경부터 코드, 작업물에 대해 피드백을 요청하였음.
  4. 현재 작업은 MainBranch에만 push하고 있으나, 각 기능별 branch 작업이 향후 협업에 있어서도 좋을 것으로 피드백을 받음.
  5. 이에 GitHub의 기능을 사용하여 작업 방식을 보완하고자 함.

GitHub 협업 요소

  • 구성 요소: Issue + Branch + PR + Merge

Issue

  • 왜 사용하는가?
    1) 먼저 작업을 계획하고, 일정관리를 하기 쉬움. 마일드스톤, 라벨링, 담당자 등을 설정하여 작업 담당자 확인이 용이하다.
    2) 해당 이슈에 대한 comment 기능이 있어, 서로의 의견을 나누고 확인하기 용이함.

Branch

  • 왜 사용하는가?
    1) 여러 사람이 동시에 main branch에서 작업을 할 경우, 완성된 코드가 추가되거나 다른 사람들의 작업이 main branch에서 충동할 수 있다.(불일치 된 코드를 merge)
    2) 기능에 대한 각 branch를 제공함으로써 병렬적으로 작업을 진행하고, 완료된 내용에 대해 검토후 합침으로써 서로의 작업에 영향을 주지 않고 안정적으로 작업할 수 있게 된다.
    3) 이로써 각 branch의 작업 상태도 각각 확인할 수 있기 때문에 안정적인 코드 운영이 가능하게 됨.

Pull Request(PR)

  • 왜 사용하는가?
    1) 원격 리포지토리의 브랜치에 대한 변경 사항을 제안하고, 다른 개발자과 내용을 공유함.
    2) PR 내 Comment를 통해 팀원들로부터 피드백을 받고, 안정적인 코드를 지향할 수 있게 됨.

Project에서의 GitHub 사용 과정

  1. Issue의 경우 작업 시작 전 본인이 진행코자 하는 과제의 상세 내용을 작성함.

  2. 작성된 내용에 대해 팀원들과 공유하고, 만약 공유된 내용에 대한 피드백이 있을 경우 수정하여 작업을 진행할 수 있음.

  3. 정리된 이유 사항의 진행이 문제 없이 컨펌이 나면 해당 작업에 대한 branch를 생성함.

    • git checkout -b new_branch_name
  4. 여기서 new_branch_name은 다양하게 적용할 수 있겠지만, 사전에 공유된 issus #1 number를 활용하면 좋다. issue를 생성하면 고유 number(#1, #2,,,,)가 생성됨.

  5. 예를 들어 issue4_Refac_RxSwift로 작성할 수 있다. Issue number + 하고자 하는 기능의 분류(기능 추가 feat, 버그 수정 bug, 리팩토링 refac 등)+작업 명(RxSwift 적용)

  6. branch 생성한 상태에서 작업을 진행한다.

  7. 작업이 완료된 후 동일하게 add, commit, push를 진행한다.

  • // 0. GitHub에서 작업할 내용의 Issue생성
    // 1. 브랜치 생성(Issue 번호 참조)
    git checkout -b issue4_Refac_RxSwift
    // 2. 신나게 리팩토링 작업
    // 3-1. 작업 완료 후 add .
    git add .
    // 4-1. commit 진행
    git commit -m "[Refac] RxSwift APIManager 수정"
    // 3-2. 작업 완료 후 add .
    git add .
    // 4-2. commit 진행
    git commit -m "[Refac] RxSwift ViewModel 수정"
    // 3-3. 작업 완료 후 add .
    git add .
    // 4-3. commit 진행
    git commit -m "[Refac] RxSwift MainViewController 수정"
    // 5. push
    git push origin issue4_Refac_RxSwift
  1. Push는 원격 리포지토리(브랜치: issue4_Refac_RxSwift)에 되어 있을 것임.

  2. GitHub의 리포지토리 Pull Request탭을 클릭하면 Create Pull Request 버튼이 생성됨

  3. Create Pull Request는 원격 리포지토리의 브랜치에 대한 변경 사항을 제안하고, 다른 개발자과 내용을 공유함할 수 있도록 한다.

  4. 해당 버튼을 누르면 PR에 대한 Comment를 통해 팀원들의 생각을 공유할 수 있음. 만약, 코드가 main branch merge하기 불충분하면 comment를 통해 의사 전달 하고, 확인된 의사를 바탕으로 코드를 수정하고, 다시 push를 진행한다.

  5. 코드가 문제없다고 판단되면, 해당 코드는 main branch에 merge가 됨.

  6. merge 이후 작업자는 원격 리포지토리 - main branch의 내용을 다시 로컬 main branch로 업데이트를 진행해야 함.

  • // 0. merge가 되었음. 야호
    // 1. main branch로 checkout
    git checkout main
    // 2. 원격 main branch 로부터 변경사항을 업데이트 함.
    git pull
  1. 새로운 기능을 추가할 경우 다시 issue 생성 후 branch를 생성해 작업을 진행함.

완료 예시

git merge 완료 상태

0개의 댓글