협업을 위한 Git-flow / GitHub-flow / Git branch 사용법

minkyeongJ·2022년 6월 16일
1

개발 tips

목록 보기
9/20
post-thumbnail

1. Git-flow / GitHub-flow

git-flow cheatsheet 설치부터 흐름까지

1.1 Gitflow의 장점

  • 독립적인 개발 환경
    Gitflow 사용시 기능(티켓) 단위로 독립적인 Branch를 만들기 떄문에 다른사람의 개발 결과에 영향을 받지 않는 독립적인 개발환경을 만들어줍니다. 이는 최소한의 방해로 개발을 할 수 있게 도와줍니다.
  • 쉬운 추적
    Gitflow의 feature 브랜치는 칸반 보드의 티켓과 연동이 됩니다. 칸반 보드를 보고 어떤 기능이 통합되었는지 확인이 가능하며, 오류 발생시 어떤 기능을 개발하닥 문제가 생겼는지 확인하고 쉽게 UNDO 할 수 있습니다.
  • 배포 정책 및 CI/CD 연동
    Branch 별로 역할이 분리되어있기 때문에 각 Branch의 update에 맞춰 배포 & 테스트를 하기에 용이합니다.

1.2 GitFlow 사용 Tip

  • Merge 스트레스 최소화 하기
    gitflow 사용시 Merge 스트레스를 최소화 하기 위해서는 develop 브랜치가 업데이트 될때 마다 자신의 feature 브랜치에 develop 브랜치를 머지해줍니다. 이렇게 하면 나중에 자신의 feature 브랜치를 develop에 머지할때 충돌 없이 머지할 수 있습니다.

  • Merge대신 Rebase 사용하기
    Merge대신에 Rebase를 사용하면 한줄로된 이쁜 그래프를 볼 수 있습니다. git flow를 사용하면 필연적으로 브랜치가 굉장히 많아지고 복잡해 지기 때문에 추후 추적을 위해서 rebase를 사용하는 것이 관리에 유용합니다.

다만 merge에 비해서 충돌시 해결이 어렵기 때문에 git flow를 처음 적용하는 팀일 경우 merge로 먼저 시작해보는 것을 추천드립니다.

Merge

Rebase

자신이 현재 작성하고 있는 Branch에서 develop 브랜치로 rebase한다음에 develop 브랜치에 머지를 하게 되면 깔끔한 commit tree를 볼 수 있습니다.

1.3 Git flow 용어정리

  • feature
    • 작성법: feature/기능
    • develop branch에서 생성
    • 기능 구현 단위로 사용
    • 기능 구현 완료 시 develop에 병합
  • develop
    • feature branch의 기둥(뿌리)역할
  • release
    • 작성법: release - [번호]
    • develop branch에서 생성
    • 배포 전 test 및 버그 검사
  • main
    • release branch 생성
    • 실제 배포
  • hotfix
    • 작성법: hotfix - [번호]
    • 배포이후 문제발생 시 생성

1.4 GitHub Flow(PR)

GitHub Flow 이해하기

일반적으로 알려져있는 Pull Request(PR)입니다.

  • main
    • 배포를 위한 branch
    • 전략의 중심
  • branch
    • main branch에서 생성
    • branch의 목적(release, hotfix 등)을 이름에 명시

2. branch 명령어

2.1 생성

$ git branch [브랜치명]

2.2 분기

$ git branch [분기 브랜치명] [뿌리 브랜치명]

2.3 병합

Merge

  1. $ git checkout [뿌리 브랜치]
  2. 병합할 파일이 뿌리 브랜치에서는 변경되지 않았는지 확인
  3. $ git merge [뿌리 브랜치에 병합 할 브랜치]

Merge 연습

$ git init
//첫번째 커밋 무조건 필수
$ echo 'hello world' >> readme.md
$ git add .
$ git commit -m "main1"
//브랜치 a, b, c 생성
$ git branch a
$ git branch b
$ git branch c
//<a 브랜치로 이동 및 폴더/파일 생성>
$ git checkout a
$ mkdir a
$ cd a
$ echo 'hello1' >> a.txt
$ cd ..
$ git add .
$ git commit -m 'a1'
//</a 브랜치로 이동 및 폴더/파일 생성> 과정을 a부분을 b, c로 변경하여 반복
$ git checkout main
$ git merge a
$ git merge b
$ git merge c

Rebase

  1. $ git checkout [뿌리 브랜치에 병합 할 브랜치]
  2. $ git rebase [뿌리 브랜치명]

2.4 삭제

$ git branch -D [브랜치명]

2.5 이름 변경

$ git branch -m [브랜치명] [새로운 브랜치명]

2.6 다른 브랜치로 이동

$ git checkout [이동 할 브랜치명]

2.7 브랜치 생성과 체크아웃 동시에 하기

$ git checkout -b [생성 및 이동 할 브랜치명]


3. branch 관리

3.1 등록된 branch 확인하기

$ git branch
$ git branch -v : 상세정보까지 확인

3.2 현재 위치한 branch 병합상태 확인

$ git branch --merged : 병합한 branch 목록을 확인
$ git branch --no-merged : 병합하지 않은 branch 목록을 확인

병합하지 않은 커밋을 담고 있는 브랜치는 git branch -d 명령으로 삭제되지 않는다. 병합하지 않은 브랜치를 강제로 삭제하려면 -D 옵션으로 삭제한다.

참고자료

profile
멋진 프론트엔드 개발자를 위하여!

0개의 댓글