Git의 기본적인 기능에 익숙해졌다면, 이제 Rebase와 Cherry-Pick 같은 고급 기능을 활용해 버전 관리를 더 정교하게 할 수 있다.
이 글에서는 Rebase로 깔끔한 커밋 히스토리 만들기와 Cherry-Pick으로 필요한 커밋만 선택적으로 가져오기를 상세히 다룬다.
Rebase란? 🔄
Rebase(리베이스)는 브랜치의 변경 사항을 다른 브랜치 위로 재배치하는 작업이다.
쉽게 말해, 마치 브랜치의 타임라인을 새롭게 정리하는 것과 같다.
Rebase의 주요 목적
- 커밋 히스토리 정리: 병합(Merge)보다 간결한 히스토리 제공.
- 병합 충돌 줄이기: 브랜치를 자주 리베이스해 충돌을 미리 방지.
Rebase 사용법 🌱
기본 Rebase
git checkout feature
git rebase main
feature/login
브랜치를main
브랜치 위로 재배치.- 변경 사항을 한 줄로 이어진 깔끔한 히스토리로 만든다.
Interactice Rebase로 커밋 수정하기
git rebase -i HEAD~3
HEAD~3
: 최근 3개의 커밋을 대상으로 인터랙티브 리베이스 실행.- 실행 후 편집 화면에서 각 커밋의 동작을 선택 가능:
pick
: 그대로 유지.reword
: 메시지 수정.squash
: 이전 커밋과 합치기.drop
: 커밋 삭제.
예시: 커밋 합치기(Squash)
pick 123abc 회원가입 폼 추가
squash 456def 폼 레이아웃 수정
결과:
회원가입 폼 추가 (레이아웃 수정 포함)
Rebase와 Merge 비교 🌟
- Merge: 병합 커밋을 생성해 히스토리가 복잡해질 수 있다.
- Rebase: 병합 커밋 없이 히스토리를 단순화.
[!TIP]
협업 시 Rebase를 사용할 경우 Push 전에만 사용하자. 이미 Push한 커밋을 Rebase하면 팀원들과의 히스토리가 충돌할 수 있다.
Cherry-Pick이란? 🍒
Cherry-Pick(체리픽)은 특정 커밋만 골라서 다른 브랜치로 가져오는 명령어다.
- 불필요한 변경 사항을 포함하지 않고, 필요한 부분만 적용 가능.
Cherry-Pick 사용법 🌟
기본 사용법
git cherry-pick <커밋 해시>
예시
git checkout feature/login
git cherry-pick a1b2c3
a1b2c3
:main
브랜치의 특정 커밋을feature/login
브랜치로 가져옴.
여러 커밋 Cherry-Pick
git cherry-pick <커밋 해시1> <커밋 해시2>
예시
git cherry-pick a1b2c3 d4e5f6
Cherry-Pick 충돌 해결
Cherry-Pick 중 충돌이 발생하면 Git이 멈추고 충돌 메시지를 출력한다.
- 충돌된 파일 수정.
- 수정 완료 후 추가(Commit).
git status
git add <파일명>
git cherry-pick --continue
Rebase와 Cherry-Pick 실제 사례 💡
1. Rebase로 병합 히스토리 정리
상황
feature/signup
브랜치에서 작업 중,main
브랜치에 새로운 변경 사항 추가.- 충돌 없이 병합하려면 Rebase 사용.
명령어
git checkout feature/signup
git rebase main
결과
2. Cherry-Pick으로 특정 기능 가져오기
상황
feature/payment
브랜치에 포함된 결제 API 커밋만main
브랜치로 가져오기.
명령어
git checkout main
git cherry-pick a1b2c3 # 결제 API 커밋
결과
마무리하며 🎉
Rebase와 Cherry-Pick은 Git을 더 정교하게 사용하는 데 필수적인 명령어다.
- Rebase로 깔끔한 히스토리를 유지하고,
- Cherry-Pick으로 원하는 커밋만 골라 활용하자.
궁금하거나 잘못된 점은 댓글로 남겨 주세요! 🚀
'Development > Git' 카테고리의 다른 글
Git Reflog와 문제 해결: 실수 복구하기 (0) | 2024.11.20 |
---|---|
Git Stash와 Reset/Checkout의 차이점: 혼란 끝내기 (0) | 2024.11.19 |
Git 브랜치 가이드: 만드는 법, 병합, 풀(Pull)까지 (11) | 2024.11.17 |
Git이란 무엇인가? 초짜를 위한 설명 - 개요 (0) | 2024.11.17 |