git flow 문의
강사님, 좋은 강의 너무 잘 듣고 있습니다.
git flow 챕터 설명들으면서 궁금한 점이 생겼는데요.
만약에 develop 브랜치에 5개의 feature A, B, C, D, E 가 순서대로 merge 가 되어 있는 상황에서
이번 배포는 A, C, E 를 배포하기로 결정되었다면 release 브랜치는 develop 브랜치를 어떻게 merge 할 수 있나요?
이런 경우가 종종 발생할 것 같은데 cherry-pick 같은 것을 활용하는지요?
만약 cherry-pick 같은 기능을 사용하게 되면 추후에 develop 의 어떤 기능까지가 release 에 merge 되어 있는지 막 헷갈리기 시작할 것 같은데 관리가 잘 되기 위해서 혹시 함께 관리되어야 하는 툴 같은 것도 있는지 아니면 방법들이 있는지도 궁금합니다.
답변 2
0
안녕하세요, 아리마님!
아래와 같은 방법을 시도해보시기 바랍니다!
1. develop 브랜치에서 A,B,C,D,E 브랜치를 머지하기 전으로 Reset.
- git reset --hard [commit ID]
2. develop 브랜치에서 A branch 머지.
- git merge branchA
3. develop 브랜치에서 C branch 머지. (이 과정에서 conflict가 발생한다면, 직접 해결하셔야 합니다.)
- git merge branchC
4. develop 브랜치에서 E branch 머지. (이 과정에서 conflict가 발생한다면, 직접 해결하셔야 합니다.)
- git merge branchE
5. release branch가 develop 브랜치를 머지.
- git merge develop
참고로, 이 상황에서 cherry-pick 명령어는 적합하지 않습니다. 왜냐하면 cherry-pick 은 특정 커밋 단 하나만을 내 브랜치로 가져오기 때문입니다. 아리마님의 상황에선 특정 커밋 단 하나가 아니라, 해당 브랜치에 포함된 모든 커밋을 Develop브랜치로 가져오셔야 합니다. 그러므로, cherry-pick은 적합하지 않고 merge 를 사용하셔야 합니다!
추가적으로 궁금하신 부분이 있다면 언제든 질문 주세요!
0
안녕하세요, 인프런 AI 인턴입니다. 아리마님, Git Flow를 사용하여 특정 기능만을 선택적으로 배포하는 방법에 대해 질문 주셨네요.
Git Flow에서 특정 기능만 선택적으로 배포하기
기능별 브랜치 관리:
- 각 기능별로 별도의 feature 브랜치를 관리하는 것이 좋습니다. 이렇게 하면 개발 중인 모든 기능이 develop 브랜치에 자동으로 병합되지 않도록 할 수 있습니다.
- 개발이 완료된 기능은 각각의 feature 브랜치에서 검토 및 테스트 후 develop 브랜치로 병합됩니다.
- 각 기능별로 별도의 feature 브랜치를 관리하는 것이 좋습니다. 이렇게 하면 개발 중인 모든 기능이 develop 브랜치에 자동으로 병합되지 않도록 할 수 있습니다.
Release Branch에서의 선택적 병합 (Cherry-pick 방식):
- 특정 기능(A, C, E)만 배포하기로 결정되었다면,
develop브랜치에서 해당 기능들이 포함된 커밋들만release브랜치로 선택적으로 병합할 수 있습니다.
- 이때
cherry-pick명령어를 사용하여 개별 커밋을 선택적으로release브랜치에 적용할 수 있습니다.
- 그러나
cherry-pick을 많이 사용하게 되면 커밋 히스토리가 복잡해지고, 어떤 기능이 실제로 배포되었는지 추적하기 어려워질 수 있습니다.
- 특정 기능(A, C, E)만 배포하기로 결정되었다면,
관리 도구 및 방법:
- Branch Naming Convention: 명확한 브랜치 및 커밋 네이밍 규칙을 설정하여 어떤 기능이 특정 릴리스에 포함되었는지를 명시적으로 구분하십시오.
- Release Notes 작성: 각 릴리스 마다 포함된 기능과 관련 커밋들을 기록한 Release Notes를 유지하여 혼란을 줄일 수 있습니다.
- 확장 클립보드 도구 사용: 불필요한 cherry-pick에 의한 혼동을 최소화하기 위해 GitHub의 Pull Request 기능을 통해 기능 병합 관리 가능.
- Branch Naming Convention: 명확한 브랜치 및 커밋 네이밍 규칙을 설정하여 어떤 기능이 특정 릴리스에 포함되었는지를 명시적으로 구분하십시오.
유사한 질문과 추가 정보를 확인할 수 있는 링크를 제공드립니다:
- Git에서 Cherry-pick 활용과 관리
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
깃헙 작업 완료된 develop 브랜치 질문
0
77
2
[질문] git-flow 에서 release 브랜치 생성
0
58
1
upstream연결하기
0
76
2
gitignore관련 질문
0
86
2
staging area
0
85
2
브랜치 병합 전략에 대한 지식공유자님의 생각이 궁금합니다.
0
97
1
git pull merge 요청 시 draft
0
168
2
rebase 와 3-way merge 의 근본적인 차이
0
103
2
문서가 락이 걸어져있네요.
0
76
1
vscode에서의 github로의 푸시
0
106
2
Git 머지 커밋 되돌리기(revert)와 머지 방식 선택의 안전성 질문
0
142
2
git add 동작 원리에 대한 질문
0
65
2
git rebase 질문
0
100
2
[추가 질문] 똑같은 브랜치를 다시 pull request하는 경우.
0
171
2
pull request 취소하기
0
699
2
.gitignore
0
78
2
Commit 메시지 변경 방법
0
446
2
switch 와 checkout 차이점.
0
299
1
강의자료 누락, commit 복사질문
0
153
4
강의 교재 다운로드
0
103
1
git init에서 오류 발생
0
283
2
[추가 질문] HEAD 와 COMMIT 관계가 궁금합니다.
0
105
2
HEAD 와 COMMIT 관계가 궁금합니다.
0
139
2
github 협업 내용 관련 질문 있습니다
0
92
2





