Git에서 branch merge 방법들과 각 방법의 특징을 설명해 주세요.
2024. 8. 19. 05:46ㆍ코드잇 스프린트/위클리 페이퍼
Git에서 branch merge 방법들과 각 방법의 특징을 설명해 주세요.
1. Merge
- 분리된 branch를 하나로 합치는 작업
2. Merge 전략
2-1. Fast-Forward
- 두 branch가 이전/이후 관계일 때의 merge 전략
- 별도의 merge commit 없이 HEAD의 위치를 최신 commit으로 이동함
2-2. 3-Way
- 두 branch가 공통 조상을 두고 분기했을 때의 merge 전략
- 공통 조상 commit과 각 branch의 최신 commit을 이용하여 merge 진행
- merge 진행 후 별도의 merge commit이 생성됨
- 다양한 3-Way 전략이 있음
Resolve
- 초기 3-Way Merge 전략
Recursive
- 2005년부터 resolve 전략을 대체
- 공통 조상이 없어도 재귀적으로 merge할 수 있음
- 파일명 변경을 감지할 수 있음
ORT
- Ostensibly Recursive’s Twin
- 2021년부터 recursive 전략을 대체
- recursive를 최적화하여 성능을 향상시킴
2-3. 기타 Merge 전략
- 상황에 따라 octopus, ours, subtree 등 다양한 전략이 적용될 수 있음
3. Merge 방식
3-1. Merge
- merge 전략에 따른 merge 방식
메인 브랜치에서 `git merge 병합될브랜치`
3-2. Rebase & Merge
- 분기된 branch의 commit을 그대로 끌어오는 방식
병합될 브랜치에서 `git rebase 메인브랜치`
- rebase 자체로는 병합될 브랜치에 메인 브랜치의 commit이 추가되기만 함
- rebase 이후 메인 브랜치에서 merge해야 함
3-3. Squash & Merge
- 분기된 branch의 commit을 하나로 합쳐 끌어오는 방식
- sqaush 자체 명령어는 없고, 다른 git 명령어를 활용해야 함
rebase를 통한 Squash
병합될 브랜치에서 `git rebase -i 공통조상`
- rebase INTERACTIVE 창에서 맨 위를 제외한 나머지 commit 앞에 s(Squash) 키워드를 적고, commit 창에서 합쳐진 commit 명을 적음
- rebase -i 자체로는 병합될 브랜치의 commit을 합치기만 함
- rebase -i 이후 다시 rebase하고, 메인 브랜치에서 merge해야 함
merge를 통한 Squash
메인 브랜치에서 `git merge --squash 병합될브랜치`
- merge --squash 자체로는 메인 브랜치와 병합될 브랜치의 차이를 working directory에 적용시키기만 함
- merge --squash 이후 add & commit해야 함
4. 참고 자료
'코드잇 스프린트 > 위클리 페이퍼' 카테고리의 다른 글
이벤트 버블링, 캡쳐링, 위임에 대해 설명해 주세요. (0) | 2024.09.02 |
---|---|
Git Flow 브랜치 전략에 대해 설명해 주세요. (1) | 2024.08.19 |
position의 속성들과 각각의 특징을 설명해 주세요. (0) | 2024.08.10 |
시맨틱 태그를 사용하면 좋은 점을 설명해 주세요. (0) | 2024.08.10 |
CSS의 Cascading에 대해 설명해 주세요. (0) | 2024.08.03 |