관리 메뉴

kimgusxo 님의 블로그

3. 깃 브랜치, 병합 및 협업 전략 본문

Git

3. 깃 브랜치, 병합 및 협업 전략

kimgusxo 2025. 3. 26. 03:09

1. 브랜치(Branch)의 이해와 활용

1-1. 브랜치란?

  • 브랜치는 메인 코드 라인에서 분리된 독립적인 작업 공간을 제공한다. 새로운 기능 개발이나 버그 수정 시 메인 코드에 영향을 주지 않고 별도로 작업할 수 있는 공간이다.
  • 각 기능을 독립적으로 개발 및 테스트할 수 있다.
  • 코드 충돌 가능성을 줄이고 안정적인 메인 브랜치를 유지할 수 있다.

 

1-2. 브랜치 확인

  • 로컬 저장소의 브랜치 확인하기
git branch
  • 원격 브랜치까지 포함한 모든 브랜치 확인하기
git branch -a

 

1-3. 브랜치 생성 및 전환

  • 브랜치 생성: "feature/login" 이라는 이름의 새 브랜치를 생성한다.
git branch feature/login
  • 브랜치 전환: 특정 브랜치로 전환할 때 사용하며 현재 작업 공간을 해당 브랜치로 이동시킨다.
git checkout feature/login
  • 생성과 전환을 한 번에
git checkout -b feature/login

 

2. 병합(Merge)과 리베이스(Rebase)

2-1. 병합(Merge)

  • 다른 브랜치에서 작업한 변경 사항을 현재 브랜치에 합치는 과정이다.
  • 장점: 각 브랜치의 히스토리가 그대로 남아있어 작업 과정을 추적하기 좋다.
  • 단점: 빈번한 병합 커밋이 생기면 히스토리가 복잡해질 수 있다.
git checkout main
git merge feature/login

 

2-2. 리베이스(Rebase)

  • 한 브랜치의 커밋들을 다른 브랜치의 최신 커밋 위에 재배치하여 깔끔한 직선형 히스토리를 만드는 방법이다.
  • 이미 원격에 공유된 브랜치에서 리베이스를 사용하면 혼란을 줄 수 있으므로 개인 작업 브랜치에서 주로 사용한다.
  • 충돌이 발생할 경우, 수동으로 해결한 후 "git rebase --continue"를 실행한다.
git checkout feature/signup
git rebase main

 

3. 충돌(Conflict) 해결 전략

3-1. 충돌 발생 원인

  • 동일 파일의 동일부분을 서로 다른 브랜치에서 수정한 경우 발생한다.

 

3-2. 충돌 해결 방법

  • 충돌 확인: 병합이나 리베이스 도중 충돌이 발생하면 해당 파일 내에 <<<<<<<, =======, >>>>>>> 같은 마커가 나타난다.
  • 수정: 텍스트 에디터를 열어 충돌 마커를 제거하고 올바른 코드를 선택 또는 수정한다.
  • 스테이징 및 커밋: 수정한 파일을 스테이징하고 커밋한다.
git add <충돌해결된 파일>
git commit -m "충돌 해결: <파일명> 수정"
  • 도구 활용: VS Code, Meld, KDiff3 등 GUI 기반 충돌 해결 도구를 사용하면 작업하기 편하다.

 

4. 협업을 위한 브랜치 전략

4-1. Git Flow 구조

  • main(또는 master): 배포가능한 상태
  • develop: 개발 중인 최신 코드를 저장
  • feature/*: 기능 개발 브랜치
  • release/*: 배포 전 최종 조정 브랜치
  • hotfix/*: 긴급 수정 브랜치

 

4-2. Github flow 구조

  • main: 항상 배포 가능한 상태
  • 기능 개발 시 별도의 브랜치를 생성하고 Pull Request를 통해 리뷰 및 병합 진행