강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

baeksu님의 프로필 이미지
baeksu

작성한 질문수

Git & GitHub, 원리부터 차근차근 - 근본깃 [완성편]

동료와 협업하기(4/4) #pull request #default branch #collaborators ★

[질문] git-flow 에서 release 브랜치 생성

작성

·

10

0

안녕하세요 강사님, 강의 재밌게 듣고 있습니다. 좋은 강의 감사합니다.

 

최근 실무에서 develop 브랜치에 A,B,C,D,E 순서로 merge 가 되어 있는 상황에서 배포를 A,D,E 기능만 배포해야 하는상황이 발생했었는데요?

 

보통 실무에서 어떤식으로 해결들을 하는지 궁금합니다.

 

1. main 브랜치에서 release 브랜치를 생성후에 develop 브랜치에서 필요한 merge 커밋들만 cherry-pick 하는 방식을 써도 되는지?

 

  1. develop 브랜치에서 release 브랜치를 생성후에 제외필요한 브랜치 merge 커밋을 revert ?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. baeksu님, Git Flow에서의 release 브랜치 생성과 관련하여 질문을 주셨군요. 특정 기능만을 선택적으로 배포해야 하는 경우 여러 전략을 활용할 수 있습니다.

1. Cherry-pick 방식

  • main 브랜치에서 release 브랜치 생성 후 cherry-pick:
    • main 브랜치에서 release 브랜치를 생성합니다.
    • develop 브랜치에서 필요한 커밋(A, D, E)만 cherry-pick 하여 release 브랜치에 적용합니다.
    • 이 방법은 필요한 기능만을 정확히 release 브랜치에 포함할 수 있는 장점이 있지만, 여러 커밋을 cherry-pick 하는 과정에서 의존성 문제나 충돌이 발생할 수 있습니다.

2. Revert 방식

  • develop 브랜치에서 release 브랜치 생성 후 필요 없는 커밋 revert:
    • develop 브랜치에서 release 브랜치를 생성합니다.
    • 이후 필요 없는 기능(B, C)에 해당하는 커밋을 revert 합니다.
    • 이 방법은 전체 흐름을 쉽게 가져오면서도 특정 기능을 제거할 수 있는 방법입니다. 그러나 많은 revert를 사용할 경우 히스토리가 복잡해질 수 있으므로 주의해야 합니다.

실무에서의 일반적 사용

  • 두 방법 모두 실무에서 사용될 수 있으며, 팀의 개발 방식과 프로젝트의 특성에 따라 선택 가능합니다.
  • 기능 플래그(Feature Flag)를 활용할 수 있습니다. 이는 코드 자체에 조건문 등을 통해 특정 기능을 활성화 또는 비활성화할 수 있게 하여, 브랜치의 복잡한 병합과 cherry-pick을 피할 수 있습니다.

기타 관련 질문과 정보는 아래 링크에서 확인하실 수 있습니다:
- Git에서 Cherry-pick 활용과 관리

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

baeksu님의 프로필 이미지
baeksu

작성한 질문수

질문하기