rebase vs merge
| merge | rebase | |
|---|---|---|
| 히스토리 | 머지 커밋 생성, 분기 그대로 | 선형으로 정리 |
| 충돌 해결 | 한 번 | 커밋마다 |
| 공개 브랜치 | 권장 | 사용 금지 |
| 로컬 작업 | 가능 | 권장 |
기본 rebase
Bash
# feature 브랜치에서 main 최신 내용 반영
git checkout feature/my-feature
git rebase main
# 충돌 발생 시
# 1. 파일 수정하여 충돌 해결
# 2. git add 해결된 파일
# 3. git rebase --continue
# 중단하고 원래 상태로
git rebase --abortinteractive 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했으면 거절됨)
편집 안내 · Editorial Note
이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.
관련 공식 문서Git 공식 문서 ↗
질문 & 답변 (Q&A)
이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.