[Git] Branch - Rebase & Squash

SeungWoo Cha·2025년 9월 19일

[Git] Git_GitHub

목록 보기
2/4

Git 브랜치와 병합 정리

1. 브랜치의 필요성

  • 개발 도중 새로운 기능을 추가해야 할 때, 기존 코드를 안전하게 유지하면서 개발 가능.

  • 해결 방법: 프로젝트의 복사본 생성 → 새로운 기능 개발 → 원본에 합치기

    • Git에서는 이를 branch 기능으로 쉽게 수행.

2. Git Branch

2.1 브랜치 생성 및 이동

git branch 브랜치이름       # 브랜치 생성
git switch 브랜치이름       # 브랜치 이동
  • 기존에는 git checkout 브랜치이름 사용
  • 메인 브랜치로 돌아갈 때:
git switch main   # 또는 master, 설정에 따라 다름

2.2 브랜치 상태 확인

git status
  • 현재 위치한 브랜치 확인 가능.

2.3 브랜치 그래프 확인

git log --graph --oneline --all
  • 브랜치와 커밋 내역을 그래프 형태로 한눈에 확인.

2.4 HEAD

  • HEAD : 현재 작업 위치(브랜치)를 의미.

3. 브랜치 병합(Merge)

3.1 기본 Merge

git switch main           # 메인 브랜치로 이동
git merge 브랜치이름       # 브랜치 병합
  • 브랜치에서 개발한 내용을 메인 브랜치에 합침.

  • 충돌 발생 시 (merge conflict) 주의:

    1. 충돌 파일 열기 → <<<<, ====, >>>> 제거 후 원하는 코드 유지
    2. 수정 완료 후:
git add 파일명
git commit -m "merge conflict 해결"

3.2 협업 시 브랜치 활용

  • 여러 명이 동시에 같은 프로젝트를 수정할 때 유용.

  • 개발 흐름:

    1. 새로운 기능 → 브랜치 생성 → 개발
    2. 테스트 후 → main 브랜치에 Merge

4. Merge 방식

4.1 3-way Merge

  • 브랜치와 기준 브랜치 모두 신규 커밋이 있는 경우 자동 생성되는 새로운 커밋.
  • Git의 기본 Merge 방식.

4.2 Fast-forward Merge

  • 기준 브랜치에 신규 커밋이 없는 경우 발생.
  • Git이 브랜치를 단순히 이어서 병합.
git merge 브랜치명       # Fast-forward merge 자동 수행
git merge --no-ff 브랜치명  # 강제로 3-way merge

4.3 브랜치 삭제

git branch -d 브랜치이름    # 병합 완료 브랜치 삭제
git branch -D 브랜치이름    # 병합되지 않은 브랜치 강제 삭제

5. Rebase & Merge

5.1 Rebase

  • 브랜치의 시작점을 다른 커밋으로 옮기는 작업.
  • 활용 예:
git switch 신규브랜치
git rebase main
git switch main
git merge 신규브랜치
  • 장점: 커밋 내역을 한 줄로 정리 → Fast-forward Merge
  • 단점: 브랜치 차이가 크면 충돌 발생 가능.

5.2 Squash & Merge

  • 브랜치의 여러 커밋을 하나의 커밋으로 합쳐 main 브랜치에 적용.
  • 장점: main 브랜치 커밋 내역 깔끔, 3-way merge보다 단순.
git merge --squash 브랜치명
git commit -m "새 기능 통합"

요약

  • 브랜치(branch) : 프로젝트 복사본 생성 → 안전하게 개발 → 메인에 병합

  • Merge 방식

    1. 3-way merge : 기본, 양쪽 모두 신규 커밋 존재
    2. Fast-forward merge : 기준 브랜치 신규 커밋 없음
    3. Rebase & merge : 커밋 이력 정리 + 강제 fast-forward
    4. Squash & merge : 브랜치 커밋을 하나로 합쳐 병합
  • 협업 시 브랜치를 활용하면 안정적이고 효율적인 개발 가능

profile
한 발자국씩

0개의 댓글