반쯤 끝낸 작업 옆에서 hotfix하기
feature/profile-page에서 두 시간째 작업하는데 on-call channel에서 운영의 critical bug를 지금 고쳐 달라는 연락이 왔다고 해보자. 진행 중 작업을 억지로 commit하거나 잃어버리는 건 잘못된 대응이야. 올바른 routine은 작업을 안전하게 피신시키고, main에서 branch를 갈라 fix하고 ship한 뒤 돌아오는 거야. 연습돼 있다면 15분 안에도 가능해.
피신 방법은 둘이야. 작업이 작고 방해가 짧다면 stash를 써. git stash push -u -m "WIP: profile-page"가 staged, unstaged, untracked file을 저장하고 tree를 깨끗하게 해. hotfix가 30분 이상 걸리거나 feature를 다른 창에서 계속 열어두고 싶다면 worktree가 좋아. git worktree add ../repo-hotfix hotfix/login-crash main은 현재 feature를 흔들지 않고 병렬 checkout을 만들어.
Hotfix도 작은 변경의 규칙을 따라. main에서 branch를 만들고 명확한 message의 commit 하나로 fix한 뒤 push해. 긴급한 이유와 검증법을 쓴 PR을 열고 빠르게 review한 뒤 merge하고 배포해. 의식이 목적을 가로막는다면 불필요한 절차는 줄일 수 있지만, fix가 bug를 실제로 막는다는 test는 건너뛰지 마. 검증하지 않은 '될 것 같은' hotfix가 두 번째 outage를 만드는 길이야.
land와 배포 뒤에는 feature로 돌아와 hotfix가 든 main을 따라잡아야 해. git switch feature/profile-page하고 stash를 썼다면 git stash pop해. worktree였다면 cd ../처럼 원래 directory로 돌아와. 이어서 git fetch origin과 git rebase origin/main으로 feature를 최신 main 위에 올려. 같은 줄을 건드렸다면 여기서 conflict를 풀고 작업을 계속해.