3주차 위클리 페이퍼

보리·2024년 3월 16일
0

codeit-sprint

목록 보기
8/22

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

1. merge

  • 현재 브랜치를 다른 브랜치와 병합함.
    ⚠️main 브랜치가 맨 왼쪽에 있어서 HEAD가 밀려버리는 상황이 발생하면 그래프 순서가 꼬인다는 단점!

2. Squash and merge

  • 브랜치에서의 모든 변경 사항을 하나의 커밋으로 저장함.
git merge --sqaush [머지할 브랜치]

⚠️일반 merge에 비해 남아있는 정보량이 적어 개발용 브랜치에서 언제 어떤 코드를 바꿨는지에 대한 정보가 사라질 수 있다는 단점!

3. Rebase and merge

  • rebase 기능을 이용해 브랜치를 머지함.
    ⚠️merge commit이 없어서 어느 시점에 merge가 되었는지 판단하기 어렵다는 단점

✔️fast-forward merge

  • 새로운 커밋이 생기는 것이 아닌 단지 브랜치가 이동함.
  • 다른 상태를 병합하는 것이 아니라 단순히 HEAD만 이동시키면 merge가 처리될 수 있는 환경에서 수행됨.
// rebase and merge를 할 때 머지했다는 커밋 메시지를 남기고 싶을 때
git merge -no-ff [머지할 브랜치]

// fast-forward가 아니면 머지를 하고 싶지 않을 때
git merge -ff-only [머지할 브랜치]

✔️3-way merge

  • 3가지 커밋을 기준으로 머지 커밋을 자동으로 만듦.
  • 브랜치마다 신규 커밋이 하나 이상 있는 경우 새로운 커밋을 생성하면서 합쳐줌.

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

  • main(master): 서비스를 직접 배포하는 역할을 하는 브랜치
  • develop: feture에서 개발된 내용이 저장되는 브랜치
  • feature: 기능 개발 브랜치
  • release: 배포 전 내용을 QA하기 위한 브랜치
  • hotfix: 출시 버전에서 발생한 버그를 수정하는 브랜치

  • master와 develop 브랜치는 필수다. (develop 브랜치는 master에서 시작된 브랜치)
  • develop 브랜치에서는 상시로 버그를 수정한 커밋들이 추가된다.
  • 개로운 기능 추가 작업이 있는 경우 develop 브랜치에서 feature 브랜치를 생성한다. (feature 브랜치는 항상 develop 브랜치에서 시작)
  • 기능 추가 작업 완료 후 feature 브랜치는 항상 develop 브랜치로 merge됨.
  • merge 후 QA 진행을 위해 release 브랜치 생성.
  • release 브랜치에서 QA에서 진행된 버그를 수정한다.
  • QA 통과 후, release 브랜치를 master와 develop 브랜치로 merge한다.
profile
정신차려 이 각박한 세상속에서

0개의 댓글