/엔지니어/Git / CI·CD/git rebase · cherry-pick 실전
Git / CI·CD고급UbuntumacOSWindowsgitrebasecherry-pick

git rebase · cherry-pick 실전 가이드

커밋 히스토리 정리, 브랜치 동기화, 특정 커밋만 가져오기까지 rebase와 cherry-pick을 실무 관점에서 정리합니다.

rebase vs merge

mergerebase
히스토리머지 커밋 생성, 분기 그대로선형으로 정리
충돌 해결한 번커밋마다
공개 브랜치권장사용 금지
로컬 작업가능권장

기본 rebase

Bash
# feature 브랜치에서 main 최신 내용 반영
git checkout feature/my-feature
git rebase main

# 충돌 발생 시
# 1. 파일 수정하여 충돌 해결
# 2. git add 해결된 파일
# 3. git rebase --continue

# 중단하고 원래 상태로
git rebase --abort

interactive rebase — 커밋 정리

Bash
# 최근 3개 커밋 편집
git rebase -i HEAD~3

에디터에 표시되는 명령:

CODE
pick a1b2c3 첫 번째 커밋
pick d4e5f6 두 번째 커밋
pick g7h8i9 세 번째 커밋

pick을 다음으로 변경:

명령동작
pick그대로 유지
reword커밋 메시지 수정
edit커밋 내용 수정
squash이전 커밋과 합치기 (메시지 합침)
fixup이전 커밋과 합치기 (메시지 버림)
drop커밋 삭제

squash 예시 — WIP 커밋 정리

Bash
git rebase -i HEAD~4

# 에디터:
pick a1b2c3 feat: 로그인 기능
fixup d4e5f6 wip
fixup g7h8i9 wip 2
reword h0i1j2 fix: 토큰 갱신 버그

결과: 4개 커밋이 2개로 깔끔하게 정리됩니다.


cherry-pick — 특정 커밋만 가져오기

Bash
# 커밋 해시 찾기
git log --oneline feature/hotfix

# 단일 커밋 적용
git cherry-pick a1b2c3

# 범위 지정
git cherry-pick a1b2c3..g7h8i9

# 커밋하지 않고 스테이지만
git cherry-pick -n a1b2c3

# 충돌 해결 후
git cherry-pick --continue

# 중단
git cherry-pick --abort

실무 패턴

Bash
# hotfix를 main과 release 브랜치 양쪽에 적용
git checkout main
git cherry-pick fix-commit-hash

git checkout release/v2.0
git cherry-pick fix-commit-hash

# PR 전 커밋 정리
git fetch origin
git rebase origin/main
git rebase -i origin/main

주의사항

  • 이미 push한 커밋은 rebase 금지 — 협업자의 히스토리가 깨집니다
  • 부득이하게 force push할 경우: git push --force-with-lease 사용 (남이 중간에 push했으면 거절됨)
#git#rebase#cherry-pick#커밋정리#협업
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

관련 공식 문서Git 공식 문서

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.