소프트 스킬 · 중급
Git Merge, Rebase, Squash의 차이점과 각각의 사용 시나리오를 설명해주세요.
힌트 · Merge Commit 생성 vs 선형 이력, Squash로 커밋 정리, Rebase 후 Force Push 주의점을 설명해보세요.
Merge CommitCommit HistoryFast-forwardInteractive RebaseSquash Commit
모범답안
Git에서 Merge, Rebase, Squash는 브랜치를 합치는 방법이지만, 각각 다른 특징과 사용 시나리오를 가지고 있습니다.
Merge는 브랜치들을 합칠 때 Merge Commit을 생성하여 이력을 남깁니다. 히스토리를 중요하게 생각하고, 브랜치 작업 내역을 보존하고 싶을 때 사용합니다. 예를 들어, 기능 개발 브랜치를 main 브랜치에 합칠 때 사용할 수 있습니다.
Rebase는 브랜치의 시작점을 옮겨서 커밋 히스토리를 선형으로 만듭니다. 깔끔한 히스토리를 유지하고 싶을 때 유용하지만, 이미 공유된 브랜치에 Rebase를 하면 문제가 발생할 수 있으므로 주의해야 합니다. 특히 Force Push가 필요할 수 있습니다.
Squash는 여러 커밋을 하나의 커밋으로 합치는 기능입니다. 불필요하게 많은 커밋을 정리하거나, 의미있는 단위로 커밋을 묶을 때 사용합니다. 예를 들어, 기능 개발 브랜치에서 여러 개의 작은 커밋들을 하나의 완성된 기능 커밋으로 만들 수 있습니다. Interactive Rebase를 통해 Squash를 수행할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Git / 협업 면접 질문
- fork와 clone의 차이를 설명하고, 오픈소스 기여 시 fork 기반 워크플로우를 설명해주세요.
- Git의 객체 모델에서 blob, tree, commit 객체는 각각 무엇을 저장하나요?
- Git에서 blob 객체는 파일 이름을 저장하지 않는다고 하는데, 그렇다면 파일 이름은 어디에 기록되나요?
- Git Flow 브랜치 전략을 설명하고, GitHub Flow와 어떻게 다른지 비교해주세요.
- git reset, git revert, git restore의 차이점을 설명해주세요.
- git cherry-pick이란 무엇이며, 언제 사용하나요?