cs/Git

Github flow

ignuy 2023. 7. 26.

대부분의 개발자들이 협업을 통해 일을 하고 작업을 공유하고 있다. 어떤 개발자는 코드를 보고 수정사항을 찾아내고 어떤 개발자는 기능을 개발하기 위해 코드를 추가하고 어떤 개발자는 기능 보수를 위해 기존의 코드를 뜯어고치고 있다. 이들이 각자 작업하는 경우 파일에는 버전이 생기고 이를 관리해야 하는 필요성을 느끼게 된다. 우리는 이럴 때 형상관리도구를 사용하게 된다. 현재 주류로 여겨지는 Git에서 사용할 만한 브랜치 관리 전략 세가지를 정리하고 소개하겠다.

 

오늘은 그 첫번째 flow인 Github Flow이다.

Github Flow

추후 소개할 Git Flow가 Github에서 활용하기 복잡하다는 단점을 극복하기 위하여 나온 브랜치 전략이다. 브랜치는 단순하게 MasterFeature브랜치, 두 개로 나뉜다. 웹 서비스에서 배포의 뚜렷한 개념이 흐려지고 있기 때문에 사용하기 유용한 flow이다. hotfix와 단위 기능 구현을 구분하고 있지 않아서 우선순위를 구분하여 작업해야 한다. 흐름이 굉장히 단순하므로 그 규칙도 단순해졌다.

1. master 브랜치는 항시 배포가 가능한 상태를 유지한다.
2. master에서 새로운 작업을 시작하기 위해 브랜치를 만들 때, 이름을 명확히 작성해야 한다.
3. 브랜치에 수시로 push한다.
4. 피드백, 이슈, merge 준비가 완료되었을 때 PR을 작성한다.
5. 기능에 대한 논의 또는 리뷰가 끝난다면 master로 merge 한다.
6. master에 merge 되면 즉시 배포되어야 한다.

위 여섯 가지 규칙은 github flow를 사용할 때 만나는 순서로 작성하였다. 규칙은 단순한 만큼 예외 없이 반드시 지켜야 한다. 규칙을 하나씩 더 자세히 들여다보자.

1. master 브랜치는 항시 배포가 가능한 상태를 유지한다.

6번 규칙을 지키기 위해 master 브랜치는 항상 배포가 가능한 상태를 유지하여야 한다. master 브랜치는 stable 상태로 product에 배포되는 브랜치이다. 따라서 이 브랜치는 엄격한 role과 함께 사용된다.

2. master에서 새로운 작업을 시작하기 위해 브랜치를 만들 때, 이름을 명확히 작성해야 한다.

모든 브랜치는 항상 master 브랜치에서 만들어진다. feature나 develop, hotfix 등의 세부적인 브랜치 체계가 존재하지 않기 때문에 브랜치는 반드시 자세하게 어떤 일을 하고 있는지에 대해 표시할 수 있어야 한다.

3. 브랜치에 수시로 push 한다.

커밋은 최대한 명확하게 작성하자. 계속 언급하지만 브랜치 체계가 단순하기 때문에 커밋 메시지에 의존하여 작업을 확인하게 된다. 따라서 아주 상세한 커밋 메시지가 협업에 도움이 된다. 작성한 commit은 다른 사람들도 어떤 작업을 하고 있는지 알게 하기 위해서 원격지 브랜치로 수시로 push 한다(Git flow와는 전혀 반대되는 방식이므로 주의하자).

4. 피드백, 이슈, merge 준비가 완료되었을 때 PR을 작성한다.

PR은 코드 리뷰를 도와준다. 자신의 코드를 공유하고 리뷰받자. PR을 두려워하지 말자. 잘못한 부분이 있어도 리뷰어가 상세히 잘못한 부분을 말해줄 것이고 이를 고쳐 다시 커밋하면 된다. 억지스러운 코드를 올려도 리뷰어가 피드백을 줄 것이니 도움을 받자.

 

PR의 바로 다음 단계는 master로 merge이다. master브랜치로 합쳐지는 것은 라이브 서버에 바로 반영되는 것을 의미하므로 상세한 리뷰와 토의가 이루어져야 한다.

5. 기능에 대한 논의 또는 리뷰가 끝난다면 master로 merge 한다.

merge 전에 해당 내용을 라이브 서버 또는 테스트 환경에 올려 배포를 시도한다. 문제발생 시 곧장 master 브랜치의 내용을 배포하여 초기화해야 한다.

6. master에 merge 되면 즉시 배포되어야 한다.

5번 규칙을 문제없이 넘어왔다면 master브랜치에 푸시하고 바로 배포를 진행한다. 대부분의 GitHub-Flow는 1번 규칙에 의해 master를 최신 브랜치로 잡고 있기 때문에 자동화를 통해 Merge를 즉시 배포한다. 6번 규칙은 결국 GitHub-Flow의 핵심이 된다.

'cs > Git' 카테고리의 다른 글

[git] 이미 존재하는 폴더 깃헙에 올리기  (0) 2023.11.28

댓글