Cherry-pick은 골라 가져오고, rerere는 해결을 기억해
다른 branch의 commit 하나만 필요하고 branch 전체를 merge하고 싶지 않을 때 git cherry-pick <hash>를 써. 그 commit의 변경을 현재 branch 위의 새 commit으로 적용해. source commit과는 hash가 다르므로 복사지를 옮기는 일이 아니야. main의 bug fix를 release branch로 backport하거나, 버릴 실험 branch에서 유용한 commit 하나를 건지거나, 오래 나란히 가는 branch 사이에 fix를 전파할 때 좋아.
git cherry-pick A..B는 A 다음부터 B까지의 commit을 순서대로 적용해. conflict가 나면 merge나 rebase처럼 멈추며, 해결하고 git add한 뒤 git cherry-pick --continue해. --abort로 시작 전으로 돌아갈 수도 있어. -x는 message에 "(cherry picked from commit <hash>)"를 붙여 branch를 건넌 변경의 출처를 남겨.
git rerere, 곧 "reuse recorded resolution"은 오래 병렬로 가는 branch가 있는 repo의 숨은 영웅이야. 활성화하면 Git이 conflict 해결을 기록했다가 같은 hunk와 같은 양쪽 내용이 다시 충돌할 때 이전 답을 자동 적용해. main과 주기적으로 merge하는 maintenance branch에서 특히 큰 수고를 아껴. git config --global rerere.enabled true로 켜두면 절약이 조용히 쌓여.
main에서 release branch로 fix 열 개를 backport한다고 해보자. rerere가 없으면 main의 후속 refactor가 같은 줄을 건드릴 때마다 cherry-pick conflict를 다시 풀어야 해. rerere가 켜져 있으면 각 pattern을 한 번만 해결하고 같은 pattern은 자동으로 처리해. git rerere status로 기록 상태를 보고, 저장한 해결이 틀렸다면 git rerere clear로 cache를 비워.