본문 바로가기

개인블로그를 옮겼습니다.
https://heavybear.net/post
코드잇 스프린트/위클리페이퍼

위클리 페이퍼 #2

1. Git에서 branch merge 방법들과 각 방법의 특징을 설명해 주세요.

git에서 merge란 서로 다른 브랜치들을 통합하여 하나로 합치는 과정을 말합니다.

브랜치를 merge하는 주요 방법들은 다음과 같습니다.

 

1) fast foward merge

병합 시 새로운 커밋 없이 HEAD가 단순히 병합할 브랜치의 최신 커밋으로 이동하는 방법입니다.

브랜치가 분기되지 않고 직선적인 히스토리를 가진 경우에 사용됩니다. 

 

- 새로운 병합 커밋이 생성되지 않으므로 히스토리가 깔끔하게 직선으로 유지됩니다.

- 병합 대상 브랜치가 현재 브랜치에서 파생된 이후에 다른 변경이 없는 경우에만 가능힙니다.

 

2) 3 way merge

브랜치가 분기된 이후 서로 다른 변경사항을 가지는 경우에 사용됩니다. 공통 조상(merge base)과 각각의 변경사항을 비교하여 새로운 병합 커밋을 만듭니다.

 

- 새로운 병합 커밋을 생성합니다. (히스토리에 병합 작업 기록이 남습니다.)

- 충돌이 발생할 수 있습니다.

 

3) rebase merge

한 브랜치의 커밋들을 다른 브랜치의 끝에 재배치하여 merge하는 방법입니다.

 

- 브랜치의 커밋들을 다른 브랜치의 끝에 재배치하기 때문에 히스토리를 깔끔하게 만듭니다.

- 분기점이 사라지기 때문에 깔끔하게 직선으로 유지됩니다.

- 히스토리 재작성이 발생하므로 리모트 등 어딘가에 Push로 내보낸 커밋에 대해서는 절대 Rebase 하지 말아야 합니다

 

4) squash merge

여러 커밋을 하나의 커밋으로 압축하여 병합하는 방법입니다. 최종 병합 커밋만 남고 중간의 커밋들은 하나로 합쳐집니다.

 

- 단일 커밋으로 병합되기때문에 히스토리가 간결해집니다.

- 중간 커밋 이력이 남지 않습니다.

- 병합커밋이 생성되지 않고, 단일 커밋만 기록됩니다.

 

 

2. Git Flow 브랜치 전략에 대해 설명해 주세요.

git flow란 git 기반의 프로젝트의 브랜치 관리를 위한 브랜치 모델중 하나입니다. 

git flow, github flow, gitlab flow등이 있으며, git flow의 주요 브랜치와 사용목적은 다음과 같습니다.

 

  • master : 제품으로 출시될 수 있는 브랜치로서 최종 릴리스 버전이 담기는 브랜치입니다.
  • develop : 기능 개발이 완료된 코드가 병합되는 브랜치입니다.
  • feature : 새로운 기능을 개발하기 위해 develop에서 분기해서 작업후 다시 develop으로 병합됩니다.
  • release : 릴리스 준비가 되면 develop에서 분기하여 버그 수정 및 최종 테스투후 master와 develop에 병합됩니다.
  • hotfix :  master에서 발생한 긴급 수정 사항을 반영할 때 사용됩니다. 수정후 master와 develop에 병합합니다.

* 항상 유지되는 메인 브랜치들 : master, develop

* 일정 기간 동안만 유지되는 보조 브랜치들 : feature, release, hotfix

'코드잇 스프린트 > 위클리페이퍼' 카테고리의 다른 글

위클리 페이퍼 #1  (2) 2024.10.22