신입프로젝트 Git Flow & Github 사용기 - leeho203/practice GitHub Wiki
Git Flow의 흐름
중심이 되는 브랜치는 master
와 develop
이며 이 두 개의 브랜치는 무조건 존재하여야 합니다. master
는 최종 릴리즈한 안정화 버젼을 위한 브랜치이고, develop
은 다음 릴리즈를 위해 개발 중인 최신 버젼의 브랜치 입니다.
또한, feature
는 특정 기능 개발을 위한 브랜치이며, release
는 릴리즈 점검을 위한 브랜치, hotfix
는 긴급 버그 픽스를 위한 브랜치입니다.
Master Branch와 Develop Branch
- 지속적으로 존재하는 두 개의 중심 브랜치
- master는 최종 배포 상태의 소스코드를 반영하는 브랜치입니다.
- develop은 다음 릴리즈를 위한 최신 개발 변경사항을 반영하는 브랜치입니다.
- develop이 안정화되고 릴리즈 될 준비가 되었다면 develop의 내용이 master에 머지됩니다.
Feature Branch
- 브랜치 나오는 곳 :
develop
- 브랜치가 들어가는 곳 :
develop
- 이름 지정 :
feature-*
- 새로운 기능을 추가하는 브랜치입니다. 머지를 할때,
--no-ff
옵션을 이용하여 브랜치에서 머지가 되었음을 git 기록에 남겨두도록 합니다.
Release Branch
- 브랜치 나오는 곳 :
develop
- 브랜치가 들어가는 곳 :
develop
,master
- 이름 지정 :
release-*
- 새로운 릴리즈를 위한 브랜치입니다. 지금까지 개발한 기능들을 묶어
develop
브랜치에서release
브랜치를 따내고,develop
브랜치에서는 다음번 릴리즈에서 사용할 기능을 추가합니다.release
브랜치에는 긴급 버그 픽스에 대한 부분만 커밋하게되고, 최종적으로 릴리즈가 준비되었다고 생각하면master
로 머지를 진행합니다. 이때도--no-ff
옵션을 이용하여 머지하였음을 남깁니다.
Hotfix Branch
- 브랜치 나오는 곳 :
master
- 브랜치가 들어가는 곳 :
develop
,master
- 이름 지정 :
hotfix-*
- master에서 발생한 버그를 긴급하게 수정하기 위해서 이용하는 브랜치입니다. 버그 픽스가 끝나면
develop
,master
브랜치에 모두 반영하게 됩니다.
Github 사용기
Github의 경우 Source Tree, Git Flow과 결부하여 Pull Request
기능을 주로 이용하였습니다.
Pull Request
Pull Request
란feature
,release
,hotfix
브랜치를 이용한 소스코드의 변경사항을 Github 원격저장소의 관리자에게 허락받아master
,develop
와 같은 다른 브랜치에 merge를 요청하는 기능입니다.Create pull request
버튼을 클릭합니다
- 상단의 compare는 merge할 대상이며, base는 compare에 의해 merge를 당할 대상입니다. 즉, compare를 base에 합친다는 의미입니다. Title과 Comment 부분에 pull request에 대한 내용을 적습니다.
- pull request를 하게 되면 원격저장소의 관리자는
Merge pull request
버튼을 클릭하여 해당 pull request에 대한 merge 여부를 결정할 수 있습니다. 원격저장소의 관리자가 여러 명일 경우 전체 관리자의 '좋아요' 버튼을 받아서 merge를 결정할 수도 있습니다.
- 마지막으로, conflict 없이 merge 가 완료되면
Delete this branch
버튼을 클릭함으로써 compare에 해당하는 branch를 삭제할 수 있습니다.