Git, GitHub, Git-flow
카카오헤어샵은 GitHub을 이용해서 소스 버전 관리(Source Version Control)를 하고 있습니다. 거기에 추가로 Git-flow의 브랜치 전략을 차용하고 있습니다.
GitHub은 가장 인기 있는 Git 호스팅 서비스입니다. 우리는 Enterprise version을 구매해서 사용하고 있습니다. GitHub의 일반적인 사용 방법은 https://git-scm.com/book/ko/v2/GitHub-GitHub-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0 을 참고하세요.
우리는 GitHub의 여러 기능 중에서 Pull Request(이하 PR)를 주로 사용합니다. 담당 개발자가 branch를 생성해서 소스코드를 작성한 후 PR을 만들게 되면 Web hook으로 연결된 메신저로 알림을 받게 됩니다. 그러면 다른 개발자들은 GitHub의 PR에 코드 리뷰를 하고 댓글을 답니다. 그 다음 담당자는 코드 리뷰 내용을 반영하고, 작업이 완료되면 Base Branch에 Merge를 합니다. 이런 식으로 소스 코드 작성의 일련의 과정을 GitHub을 통해 한 번에 하고 있습니다.
Git-flow는 git 브랜치를 체계적으로 관리할 수 있게 도와주는 도구입니다. 우리는 git-flow를 직접 쓰진 않고 대신에 브랜치 전략을 차용하고 있습니다. 간략히 설명하자면 브랜치는 개발자가 직접 git command를 써서 생성하고 있고, merge는 GitHub을 통해서 하고 있습니다.
사용하고 있는 브랜치는
master는 현재 버전의 기준이 되는 곳입니다.
develop은 다음 버전의 기준이 되는 곳입니다.
feature는 기능 단위로 개발하는 곳입니다.
release는 feature를 모아 다음 버전을 준비하는 곳입니다.
hotfix는 긴급히 수정해야 것들을 개발하는 곳입니다.
Git-flow의 브랜치를 이해하기 위해서는 다음 이미지를 보면 쉽게 알 수 있습니다.
위 그림의 출처인 https://jeffkreeftmeijer.com/git-flow/ 는 Git-flow의 브랜치 전략을 잘 설명해 놓은 곳입니다. 꼭 한 번 읽어 보시기를 추천합니다.
SourceTree는 무료 Git GUI 도구입니다. https://ko.atlassian.com/software/sourcetree 에서 다운로드해서 사용할 수 있습니다. SourceTree는 히스토리를 일목요연하고 볼 수 있어서 쓰기 좋습니다.
참고로 Gitkraken이라는 다른 GUI도 있는데 평가가 좋습니다. 관심 있으신 분은 https://www.gitkraken.com/ 에서 다운로드할 수 있습니다.
GitHub, Bitbucket과 같은 상용 Git 서비스들은 이제 거스를 수 없는 대세입니다. 아직 SVN 같은 툴을 쓰고 있는 개발자분이 계시다면 하루라도 빨리 옮겨 오시기를 바랍니다.
그리고 이미 Git을 쓰고 계신 분이라면 Git-flow의 브랜치 전략을 사용해 보시기를 권해 드립니다. 처음에는 너무 복잡해서 이해하기 힘들 수도 있지만 저런 복잡함이 모두 이유가 있고 쓸모가 있음을 금방 눈치채실 겁니다.