본문 바로가기
Study/Git

Git) branch

by 죈트 2025. 1. 23.

  • Git에서 branch(브랜치)는 독립적인 작업 흐름을 만들기 위해 사용하는 개념.
  • 새로운 기능을 개발하거나 버그를 수정할 때, 기존 코드를 건드리지 않고 안전하게 작업을 진행하겨면 새 브랜치를 만들어 작업한 뒤, 완료 후 메인(main/master) 브랜치에 변경 내용을 합치는(병합, 머지) 방식이 기본 워크플로우이다.

1. 브랜치를 사용하는 이유

  • 독립적인 작업 공간
    • 현재 제품(프로덕션) 코드를 안정적으로 유지하면서, 실험적으로 기능 개발을 하고 싶을 때 유용.
    • 각 기능(또는 이슈, 버그 수정)마다 별도 브랜치를 만들어서 개발하면, 서로 간섭 없이 안전하게 작업할 수 있다.
  • 히스토리 관리 용이
    • 기능 단위로 브랜치가 만들어지고 머지(Merge) 되므로, 커밋 히스토리가 보기 쉬워진다.
    • 기능별로 작업한 커밋을 한눈에 파악할 수 있다.
  • 협업 편의성
    • 여러 명이 동시에 작업할 때, 각자 브랜치를 사용하면 충돌을 최소화하고,
      최종적으로 병합 과정을 통해 코드를 통합한다.

2. 브랜치 관련 기본 명령어

  • 브랜치 목록 보기
    • 로컬에 있는 브랜치를 전부 표시.
    • 현재 체크아웃된 브랜치는 *로 표시.
git branch

# * main

 

  • 새 브랜치 생성 & 전환
    • git branch <브랜치-이름>: 브랜치 생성만 수행
    • git checkout -b <브랜치-이름>: 브랜치 생성 후 해당 브랜치로 바로 이동
# 브랜치를 생성만
git branch <브랜치-이름>

# 생성 + 전환을 동시에 (권장)
git checkout -b <브랜치-이름>

 

  • 브랜치 전환(checkout)
    • 작업 중이던 변경사항이 커밋되지 않았다면,
      스테이시(stash)하거나 커밋을 완료해야 깨끗하게 전환할 수 있다.
# main(또는 master) 브랜치로 돌아가서
git checkout main

# 작업 브랜치를 main으로 병합
git merge <작업-브랜치-이름>
 
  • 브랜치 병합(merge)
    • 주로 main 또는 develop 브랜치로 돌아가서, 원하는 작업 브랜치를 병합.
    • 충돌이 발생하면 수동으로 충돌 해결 후 git add . → git commit
# main(또는 master) 브랜치로 돌아가서
git checkout main

# 작업 브랜치를 main으로 병합
git merge <작업-브랜치-이름>

 

  • 브랜치 이름 변경
# Checkout된 branch 이름 변경
git branch -m <새로운-이름>

 

  • 브랜치 삭제
    • -d는 “병합된 브랜치”만 삭제할 수 있다(안전장치).
    • -D는 “병합되지 않은 브랜치”도 강제로 지운다(주의!).
# 로컬 브랜치 삭제
git branch -d <브랜치-이름>

# -D 옵션을 쓰면 강제 삭제
git branch -D <브랜치-이름>
 
  • 원격 브랜치 관리
# 원격에 새 브랜치 푸시
git push origin <브랜치-이름>

# 원격 브랜치 삭제
git push origin --delete <브랜치-이름>

4. 요약

  • 브랜치는 독립된 작업 흐름을 위한 “분기”다.
  • 기능별, 이슈별로 브랜치를 따로 만들어 작업한 뒤, 병합을 통해 main 브랜치에 반영한다.
  • Git은 브랜치 생성/전환/병합이 매우 빠르고 효율적이므로, 작은 단위로 브랜치를 만들어 작업하는 편이 좋다.
  • 협업 시 충돌 관리와 코드 리뷰에도 크게 도움이 된다.

이렇게 브랜치를 잘 운용하면, 안정적인 코드를 유지하면서
동시에 여러 가지 기능 개발을 빠르고 안전하게 진행할 수 있다.

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

Git) .gitignore  (1) 2025.01.22
Git) git commit --amend  (0) 2025.01.22
Git) git log  (0) 2025.01.21
Git) git commit, git add  (0) 2025.01.09
Git) git init, git status  (0) 2025.01.09