1. 왜 Git 전략이 중요한가

백엔드 프로젝트는 시간이 지날수록 코드뿐 아니라 커밋 히스토리 자체가 중요한 자산이 된다.

Git 전략이 정리되지 않으면 다음과 같은 문제가 발생한다.

  • 커밋 로그가 fix, test, wip 같은 의미 없는 기록으로 가득해진다
  • 어떤 기능이 언제 추가되었는지 추적하기 어렵다
  • 배포 버전 관리가 어렵다
  • 코드 리뷰 효율이 떨어진다

그래서 많은 팀에서는 Git 전략을 명확하게 정의하고 운영한다.

대표적인 목표는 다음과 같다.

  • 히스토리를 기능 단위로 관리
  • 코드 리뷰 중심 개발
  • 릴리즈 추적 가능
  • 협업 충돌 최소화

2. 브랜치 전략 (GitHub Flow)

백엔드 서비스에서는 GitHub Flow 방식이 가장 단순하면서 실용적이다.

기본 구조

main
└ feature/*
 

운영 기준 브랜치는 main 하나만 사용한다.

개발 흐름

  1. main에서 feature 브랜치 생성
  2. 기능 개발
  3. Pull Request 생성
  4. 코드 리뷰
  5. Squash Merge
  6. main 배포

예시

main
└ feature/login
└ feature/payment
└ feature/user-profile
 

브랜치 이름은 기능 단위로 명확하게 작성한다.

예시

feature/login-api
feature/payment-refund
feature/order-settlement
 

3. Pull Request 중심 개발

백엔드 개발에서는 PR 단위 = 기능 단위가 되도록 관리하는 것이 중요하다.

좋은 PR의 기준

  • 하나의 기능만 포함
  • 변경 범위가 명확
  • 리뷰가 가능한 크기

좋은 PR 제목 예시

feat: login API 구현
feat: 결제 승인 로직 추가
fix: 주문 상태 전이 버그 수정
 

PR 설명에는 다음 내용을 포함하는 것이 좋다.

목적
변경 내용
테스트 방법
관련 이슈
 

4. Squash Merge 전략

GitHub에서는 PR을 Merge할 때 Squash and Merge 방식을 사용하는 것이 가장 깔끔하다.

예시

feature 브랜치

commit1: login API
commit2: validation
commit3: bug fix
commit4: test
 

Squash Merge 이후

commit: feat: login API 구현
 

장점

  • main 브랜치 히스토리가 깔끔함
  • 기능 단위 커밋 유지
  • 릴리즈 로그 생성 용이

5. Commit 메시지 규칙 (Conventional Commit)

커밋 메시지는 일관된 규칙을 사용하는 것이 중요하다.

대표적으로 많이 사용하는 규칙이 Conventional Commit이다.

형식

type: description
 

예시

feat: 결제 API 추가
fix: 로그인 오류 수정
refactor: 서비스 구조 개선
test: 결제 테스트 코드 추가
docs: README 수정
 

대표 타입

type의미
feat 새로운 기능
fix 버그 수정
refactor 리팩토링
test 테스트
docs 문서
chore 빌드 / 설정

6. 릴리즈 관리 (Tag 전략)

배포 버전 관리를 위해 Git Tag를 사용한다.

예시

v1.0.0
v1.1.0
v1.2.0
 

Semantic Versioning 규칙

MAJOR.MINOR.PATCH
 

예시

1.0.0 → 최초 릴리즈
1.1.0 → 기능 추가
1.1.1 → 버그 수정
 

7. CI/CD와 Git 전략

Git 전략은 CI/CD와 함께 사용할 때 가장 큰 효과가 있다.

예시 배포 흐름

feature branch

Pull Request

Code Review

Squash Merge

main branch

CI build

Docker image 생성

배포
 

이 구조를 사용하면

  • 코드 리뷰 기반 개발
  • 자동 빌드
  • 자동 배포

가 가능하다.


8. 정리

백엔드 프로젝트에서 가장 깔끔한 Git 전략은 다음 조합이다.

GitHub Flow
+ Pull Request 중심 개발
+ Squash Merge
+ Conventional Commit
+ Semantic Version Tag
 

이 전략의 핵심은

**"기능 단위로 개발하고 기능 단위로 히스토리를 남기는 것"**이다.

Git 히스토리는 단순한 기록이 아니라
서비스의 설계와 변경 이력을 보여주는 중요한 자산이다.

LIST

+ Recent posts