이력 다루기 — rebase · stash · tag · cherry-pick
이미 만든 이력을 손보는 기술입니다. 강력한 만큼, 절대 어기면 안 되는 황금률 하나가 따라옵니다.
학습 목표
- 대화형 rebase 로 내 이력을 정리할 수 있다
- 하던 작업을 잠시 치워 두었다가 되찾을 수 있다
- tag 로 배포 지점을 표시하고 cherry-pick 으로 커밋 하나만 가져올 수 있다
여기서부터는 이미 만든 이력을 손보는 기술입니다. git rebase 는 내 커밋들을 다른 커밋 위로 옮겨 붙여 이력을 한 줄로 정리합니다. merge 가 "사실 그대로"를 남긴다면 rebase 는 "읽기 좋게" 다듬습니다. -i(대화형)를 붙이면 공개하기 전에 커밋을 합치거나 메시지를 고치거나 순서를 바꿀 수 있습니다.
단 하나의 황금률이 있습니다. **이미 다른 사람과 공유한 커밋은 rebase 하지 않는다.** rebase 는 커밋을 새로 만들어 바꿔치기하므로, 남이 그 커밋 위에서 작업 중이었다면 이력이 갈라져 수습이 어려워집니다. 내 브랜치에서 PR 을 올리기 전까지만 자유롭게 쓰고, 그 뒤로는 쓰지 마세요.
git stash 는 지금 하던 작업을 잠시 선반에 올려 두는 명령입니다. 급한 버그 요청이 들어와 당장 브랜치를 갈아타야 할 때 씁니다. git tag 는 특정 커밋에 v1.0.0 같은 이름표를 붙여 배포한 코드를 정확히 찾을 수 있게 합니다. git cherry-pick 은 다른 브랜치의 커밋 하나만 골라 지금 브랜치로 가져옵니다. 세 가지 모두 "전부가 아니라 일부만" 다룰 때 쓰는 도구입니다.
이 단계에서 익히는 명령어
눈으로 읽지 말고 터미널에 직접 쳐 보세요. 손이 기억해야 실무에서 나옵니다.
git rebase -i HEAD~3- 최근 커밋 3개를 대화형으로 정리합니다. 합치기·메시지 수정·순서 변경.
git stash push -m "작업 중"- 지금 변경을 메모와 함께 치워 두고 바로 브랜치를 갈아탑니다.
git tag -a v1.0.0 -m "첫 배포"- 이 커밋을 배포 지점으로 표시합니다(설명이 붙는 태그).
git cherry-pick <commit>- 다른 브랜치의 커밋 하나만 지금 브랜치로 가져옵니다.