본문 바로가기
Code/Trouble Shooting

Git : 브랜치, 머지, 스태시

by hyelog 2025. 2. 16.

Git의 핵심 기능 가이드: 브랜치, 머지, 스태시

1. Branch: Git의 평행우주

Git 브랜치는 개발자에게 독립적인 작업 공간을 제공하는 가장 강력한 도구입니다. 평행우주처럼 메인 코드베이스와 분리된 공간에서 자유롭게 개발할 수 있게 해주죠.

브랜치 전략

일반적인 Git 브랜치 전략은 다음과 같은 구조를 가집니다:

  1. main (또는 master): 원본 혹은 최종본
  2. develop: 개발 중인 코드
  3. feature/: 새로운 기능 개발
  4. hotfix/: 긴급 버그 수정
  5. release/: 배포 준비

2. Merge: 평행우주의 통합

서로 다른 브랜치를 하나로 합치는 작업, 바로 머지입니다. 개발된 기능을 메인 코드베이스에 통합할 때 사용하죠.

머지의 두 가지 방식

Fast-forward 머지

  • 가장 단순한 형태의 머지
  • 브랜치가 직선적으로 진행된 경우 발생
  • 별도의 머지 커밋 없이 포인터만 이동

3-way 머지

  • 두 브랜치가 각각 변경사항을 가진 경우
  • 새로운 머지 커밋 생성
  • 브랜치의 변경 이력 보존

3. Stash: 안전한 코드 관리의 시작

현업에서 Git을 사용하다 보면 머지 충돌은 피할 수 없는 현실입니다. 하지만 스태시를 활용하면 이러한 상황을 더 효과적으로 관리할 수 있습니다.

기본 스태시 명령어

# 현재 변경사항 저장
git stash save "로그인 기능 작업 중"

# 스태시 목록 확인
git stash list

# 가장 최근 스태시 적용 및 삭제
git stash pop

# 특정 스태시 적용 (삭제하지 않음)
git stash apply stash@{2}

# 특정 스태시 삭제
git stash drop stash@{0}

머지 전 스태시 활용의 장점

  • 작업 중인 변경사항으로 인한 충돌 방지
  • 더 명확한 머지 충돌 해결 가능
  • 실수로 작업 중인 코드가 머지되는 것을 방지
  • 다른 개발자의 변경사항을 쉽게 통합

실전 시나리오

1. 메인 브랜치와의 동기화

# 현재 작업 중인 내용 저장
git stash save "feature/login 작업 중 머지 전 저장"

# 메인 브랜치 내용 가져오기
git checkout main
git pull

# 작업 브랜치로 돌아와서 메인 내용 머지
git checkout feature/login
git merge main

# 머지 완료 후 작업 내용 복원
git stash pop

2. 특정 커밋 가져오기

# 현재 작업 저장
git stash save "cherry-pick 전 작업 저장"

# 특정 커밋 가져오기
git cherry-pick abc123def

# 작업 내용 복원
git stash pop

주의사항과 팁

스태시 내용 확인

# 스태시 변경사항 상세 확인
git stash show -p stash@{0}

충돌 해결 준비

# 스태시 적용 시 충돌이 예상되는 경우
git stash apply --index  # 스테이징 영역까지 복원

실전 머지 워크플로우

1. 작업 상태 체크 및 백업

# 변경사항 확인
git status

# 변경 내용 임시 저장
git stash save "feature/ms 머지 전 백업"

2. 브랜치 최신화

# 메인 브랜치 최신화
git checkout main
git pull origin main

# 작업 브랜치 최신화
git checkout feature/ms
git merge main

3. 작업 내용 복원 및 충돌 해결

# 스태시 복원
git stash pop

# 충돌 발생 시
git status  # 충돌 파일 확인
# 충돌 해결 후
git add .
git commit -m "fix: 머지 후 충돌 해결"

마치며

Git의 브랜치, 머지, 스태시는 효과적인 코드 관리와 협업을 위한 필수 도구입니다.

특히 스태시를 활용한 안전한 머지 프로세스는 팀 협업에서 매우 중요한 역할을 했습니다. 마음의 평화..최고

한번 사용해 보시라요!

댓글