[Korean FE Article] merge vs rebase vs squash
소개
PR을 병합하는 방법에는 merge, rebase 그리고 squash가 있는데요, 이에 대한 Mitchell Hashimoto의 개인적인 의견이 담긴 아주 짧은 글입니다.
세 가지 방법을 사용해 보면서 각각 나름의 장점이 있다고 생각했었는데요, 이 글을 통해 또 하나의 관점을 배운 것 같습니다. 저자가 생각하는 바를 명확하게 핵심만 담고 있어 쉽게 읽히는 글입니다. 오랜만에 프론트엔드 외의 공통 주제의 글을 가져왔는데, 가볍게 읽어보시고 스스로의 생각은 어떠한지 정리해보셔도 좋을 것 같습니다:)
tldr;
병합, 스쿼시, 리베이스는 모두 각각의 장점이 있고 상황에 따라 어떤 것을 사용하는 것이 좋은지 달라진다고 생각합니다.
저는 병합과 병합 커밋을 생성하는 것이 있는 그대로의 이력을 가장 잘 보여준다고 생각하기 때문에 선호합니다.
모든 커밋이 정상적으로 빌드된다는 가정하에, 커밋이 많을수록 git bisect를 활용하기 더 좋아진다고 생각합니다.
PR에 수많은 작은 "WIP" "WIP" "WIP" 커밋이 있지만 총 diff가 작고 모두가 하나의 목표를 향하는 경우에는 스쿼시(squash)를 사용합니다.
만약 diff가 크고, "WIP"가 많은 경우, 저는 (대화형으로) 리베이스하고 선택적으로 스쿼시하며 커밋들의 순서를 변경합니다.