## git main에 머지하기 - 사전 상황 - git을사용하여 여러명의 개발자가 개발을 진행중이다. main브랜치가 있고, 각 기능 개발시 별도의 브랜치를 사용하여야 한다. - 개발자1과 개발자2가 각각 기능1, 기능2를 개발 중이다. - 상황 1 - 개발자2가 기능2 개발을 완료하여 main 브랜치에 머지를 하려고한다. Merge, Rebase & Merge, Squash & Merge 중 어떤 방식을 사용해야할까 - “히스토리는 무조건 깔끔해야 한다” : Squash & Merge를 사용 - main 브랜치에는 자잘한 중간 커밋을 남길 이유가 없다. - “Feature: 로그인 구현” 과 같이 기능을 대표하는 한 줄의 커밋 만 남긴다. - 비교 | **방식** | **특징** | **장점** | **단점** | | --- | --- | --- | --- | | **Merge** (기본) | 모든 커밋과 병합 기록(Merge commit)을 남김 | 작업의 흐름(맥락)을 그대로 보존함 | 히스토리가 복잡해짐 (일명 '거미줄' 발생) | | **Rebase & Merge** | 작업 브랜치의 기점을 main의 최신 상태로 옮김 | 히스토리가 한 줄로 깔끔하게 정리됨 | 충돌 해결이 까다로울 수 있고, 커밋 ID가 변경됨 | | **Squash & Merge** | 여러 커밋을 **하나의 커밋**으로 합쳐서 합침 | main 히스토리가 매우 깨끗함 (기능당 커밋 1개) | 상세한 작업 과정(중간 기록)이 사라짐 | - 상황 2 - 개발자2가 기능2를 개발하여 main 브랜치에 머지를 완료하였다.(Squash & Merge). 이제 개발자1이 기능1을 개발완료하여 main에 머지할때 취해야할 조치는? - main 브랜치는 local에 항상 최신화 되어있다고 가정 ```bash ...