DEV/Git

[Github] 깃헙 플로우(Github-Flow) 의 이해와 절차

Bi3a 2023. 10. 30. 18:27

728x90

Github Flow의 이해와 절차
github flow, 깃허브 플로우 절차와 명렁어

     


     

    깃허브 플로우(Github-Flow)

    깃허브 플로우는 브랜치 전략으로, 깃허브를 활용한 효과적인 협업 프로세스를 만들기 위한 전략입니다.
    브랜치 전략 : 여러 개발자가 하나의 저장소를 사용하는 환경에서 협업을 효과적으로 하기 위한 업무 전략
    가장 대표적인 전략으로는 깃 플로우(Git-flow), 깃허브 플로우(Github-flow)가 있습니다.

     

    1.  Github-Flow의 이해

    • 메인 브랜치에 대한 엄격한 관리
      • 메인 브랜치는 항상 최신 상태이며, 배포를 위해 사용되는 브랜치입니다.
      • pull request 과 병합 등 브랜치에 변경을 가하는 것에 대한 제약이 있습니다.
      • 새로운 브랜치는 메인 브랜치에서 파생됩니다.
      • master로 merge가 일어나면 자동으로 배포가 되어야 합니다.
    • 어떠한 이슈가 발생했을 때 브랜치가 메인에서 분리되며, 이슈 해결 후 투표를 거쳐 PR, 메인 브랜치로 병합됩니다.
      • 병합된 후로 해당 브랜치는 삭제됩니다.

     

    2.  Github-Flow 의 절차(예제)

    0. github repository settings 변경

    `Branches``protection rules``add rule` 에서 메인으로 사용하고 있는 브랜치를 지정
    `Require a pull request before merging`  체크

     

    Branch Protection rule 지정 화면

     

    해당 레포지토리 메인 브랜치에 대해 병합을 할 때 `pull request` 를 하게 끔 설정하는 것입니다.

    메인 브랜치를 중요하게 만드는 역할을 합니다.

     

    1. github repository Issue 등록 : `Issues``New issues` 클릭, `Asignees` , `Labels` 지정

    • `Asignees` : 해당 이슈 담당자
    • `Labels` : 이슈의 유형

     

    Issue 화면 설명
    Issue 등록 화면 설명

     

     

    2. 이슈 작업 전 `git pull` 로 업데이트,  → `git branch` 로 브랜치 새로 생성, `git checkout`으로 바뀐 브랜치로 변경

    git pull origin main // 메인 업데이트
            git branch "새로 만들 브랜치명"
            git checkout "새로 만든 브랜치명"

     

    브랜치 생성 룰 화면 설명
    통상명의 브랜치는 이슈명 / 번호로 작성합니다.

     

    3. 작업 후 `git add``git commit``git push origin "바뀐 브랜치"`

    4. 깃헙  `Compare & pull request` → Pull request 작성 후 `Create pull request`

     

    Compare and pull request 화면 설명

     

    pull request 등록 화면 설명
    squash and merge 기능 설명

     

    5. 병합 유형 선택 후 병합

    • `Create a merge commit` : 작업한 현 브랜치와 메인 브랜치 모두에 병합에 대한 커밋이 추가됩니다. 
    • `Squash and merge` : 현 브랜치 바로 이전 커밋(제출본)은 해당 브랜치에서 유지, 메인 브랜치에는 추가됩니다.
    • `Rebase and merge` : 현 브랜치 바로 이전 커밋(제출본)은 해당 브랜치에서 삭제, 메인 브랜치에는 추가됩니다.

     

    6. 메인 브랜치로 변경 후 git pull (로컬에 있는 메인 브랜치로 변경 후  병합 후 업데이트 진행)

     

    git pull 실행 결과

     

    7. 기존에 작업했던 브랜치 삭제 : `git branch -D "브랜치명"`

    8. 작업했던 브랜치에서 작업 내역 삭제 : `git fetch --prune`

     

    작업 내역 삭제 시 실행 결과 설명

     

    9. 깃허브 이슈는 재빠르게 닫기 ( 다른 참여자가 이슈 해결여부에 대해 오인할 수 있으므로)

     

    issue close 실행 결과 설명