히스토리 정리
히스토리 정리 — rebase·rebase -i·cherry-pick·squash 로 깔끔한 이력 만들기
merge 는 두 이력을 그대로 잇고 새 병합 커밋을 하나 만듭니다. rebase 는 브랜치의 커밋을 새 밑동에 다시 쌓아 이력을 한 줄로 폅니다. 여기에 커밋을 고르고 옮기는 cherry-pick, 커밋 여러 개를 합치는 squash 까지 더하면 리뷰하기 쉬운 깔끔한 이력을 만들 수 있습니다.
1. 왜 배우는가
브랜치(branch)를 오래 쓰다 병합(merge)을 반복하면 git log --graph 가 실타래처럼 엉킵니다. 어떤 커밋(commit)이 어떤 작업인지 찾기 어렵고, 리뷰어도 변경을 따라가기 힘듭니다.
rebase 로 이력을 한 줄로 펴고, rebase -i 로 오타 수정 커밋이나 wip 커밋을 정리하면 리뷰 대상 커밋 수가 줄어듭니다. hotfix 하나만 release 브랜치로 옮길 때는 병합 대신 cherry-pick 을 씁니다.
이 레슨은 네 가지 실습으로 익힙니다. feature 브랜치를 main 위로 rebase 해 선형 이력 만들기, 커밋 4개를 2개로 정리하기, hotfix 커밋 하나를 release 로 옮기기, rebase 충돌을 실제로 겪고 해결하기입니다.