Skip to content

Git Convention

Kuesung Park edited this page Feb 18, 2024 · 12 revisions

1. GitHub Flow 전략

GitHub Flow는 소프트웨어 개발 프로세스를 간단하고 명확하게 유지하는 데 도움을 줍니다. 이 전략의 핵심은 기능 개발, 버그 수정, 또는 실험적 시도를 위한 브랜치를 master 브랜치로부터 분기하여 사용하고, 완료되면 다시 master에 병합하는 것입니다.

기본 원칙

  1. master 브랜치는 항상 배포 가능한 상태를 유지합니다.
  2. 새로운 기능, 버그 수정, 실험적 변경 사항 등은 항상 develop 브랜치로부터 분기된 별도의 브랜치에서 작업합니다.
  3. 작업을 완료하고 배포 준비가 되면, Pull Request(PR)를 통해 develop 브랜치로 병합 요청을 합니다.
  4. 만약 master에 다른 변경 사항이 생겼을 경우, rebase를 통해 최신 상태로 유지합니다.
  5. develop로 병합할 때는 Squash and Merge를 사용합니다.
  6. master로 병합할 때는 Rebase and Merge를 사용합니다.

작업 흐름

  1. 브랜치 생성: develop 브랜치에서 feature/, fix/ 등의 접두사를 사용하여 브랜치를 생성합니다. 예: feature/new-login
  2. 개발 및 커밋: 작업 브랜치에서 변경 사항을 개발하고 커밋합니다.
  3. Pull Request 생성: 작업이 완료되면, 작업 브랜치에서 develop 브랜치로 PR을 생성합니다.
  4. 코드 리뷰 및 테스트: 동료의 코드 리뷰와 자동 테스트를 거칩니다.
  5. 병합 및 배포: 모든 검토와 테스트를 통과하면, master 브랜치에 병합하고 배포합니다.

2. Commmit Convention

좋은 커밋 메시지는 변경 사항을 이해하는 데 큰 도움이 됩니다. 다음은 커밋 메시지 작성 가이드라인입니다.

구조

커밋 메시지는 크게 제목, body(선택 사항), 그리고 footer(선택 사항)으로 구성됩니다.

<type>: <subject>

<body>

<footer>

규칙

  1. 제목:
    • 50자를 넘지 않도록 합니다.
    • master에서 분기한 브랜치에서 작업한 경우, 커밋 제목은 명령어로 작성합니다.
      • 예 : feat : 새로운 기능을 추가한다
      • type은 feat, fix, refactor, style, docs, test, chore 등으로 작성한다.
    • master에 병합할 때 Squash and Merge로 생성되는 커밋은 명령어가 아닌 키워드 위주로 작성한다.
      • 예 : Feature : 새로운 기능을 추가한다
      • type은 Feature, Fix, Refactor, Style, Docs, Test, Chore 등으로 작성한다.
  2. body:
    • 선택 사항이지만, 변경 사항을 자세히 설명할 필요가 있을 때 사용합니다.
    • 어떻게보다는 무엇을, 왜 변경했는지 설명합니다.
    • 한 줄에 72자를 넘지 않도록 합니다.
  3. footer:
    • 이슈 트래커 ID 또는 Pull Request 번호와 같은 추가 정보를 제공합니다.

예시

  1. master에서 분기한 브랜치에서 작업한 경우
    feat : 새로운 기능을 추가한다
    
    새로운 기능을 추가한다. 이 기능은 사용자가 로그인한 후에 새로운 페이지로 이동할 수 있게 해준다.
    
    Resolves #123
    
  2. master에 병합할 때 Squash and Merge로 생성되는 커밋
    Feature : 새로운 기능 추가
    
    // 분기한 브랜치에서 작업한 commit message 내용
    

3. 신규 규칙

  • Commit 은 가급적이면 기능 당 하나의 커밋을 사용한다.
  • Commit 메시지는 반드시 한글로 작성하며, 너무 길어지지 않도록 최대한 간결하게 작성한다.
    • Commit 메시지에 마침표를 사용하지 않는다.
  • husky 를 이용한 pre-commit 을 사용한다.
  • masterdevelop 브랜치에 force-push 를 금지한다. (레포 설정)

Project

Convention

스프린트

Release Note

외부 문서

Clone this wiki locally