신입프로젝트 Git Flow & Github 사용기 - leeho203/practice GitHub Wiki

Git Flow의 흐름

중심이 되는 브랜치는 masterdevelop이며 이 두 개의 브랜치는 무조건 존재하여야 합니다. 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 Requestfeature, 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를 삭제할 수 있습니다.

참고사이트