2017-02-22 6 views
1

Stack에서 많은 질문을 확인했지만 내 팀에서 Gitflow 워크 플로를 어떻게 사용할 수 있는지 파악하지 못했습니다. 마스터, 테스트DEV : 우리는 세 가지 주요 지점을 가지고 우리 팀에서프로덕션 준비가되지 않은 기능을 사용하지 않고 분기를 마스터에 병합하는 방법은 무엇입니까?

workflow

: 여기

는 우리의 지점이다. 모든 기능 분기는 dev에서 분기됩니다. 일단 그들이 다소 안정적이면 우리는 dev으로 분기합니다 (일부 개발자가 아닌 일부 개발자가 고객에게 & A로 보내기 전에 테스트를 수행 할 수 있도록 dev 서버를 유지 관리하고 있습니다). 이 기능은 고객의 테스트로 이동하기에 충분히 안정되면

그래서, 우리는 지점 시험에 분기 dev에을 병합합니다. 승인이 완료되면 테스트 분기가 마스터으로 병합됩니다.

내 문제는 : 어떤 경우에는 우리가 테스트dev에 다음에 병합 된 4 개 개의 다른 지점의 기능을 가질 수있다. 그러나 몇 가지 이유로 테스트 기능 중 하나는 제작 단계로 진행해야하지만 나머지는 고객 검증을 기다려야합니다.

어떻게에만 승인 기능 (마스터로 병합) 자극, 그리고 병합하는 동안 모든 커밋을 수행하지 않고 시험에 다른 사람에게 세를 유지하기 위해 보낼 수 있습니까?

+1

[체리 따기] 사용 (https://git-scm.com/docs/git-cherry-pick) –

+0

명확히하기 위해 1, 2, 3, 4 등의 기능이 있습니다. dev ** 및 ** 테스트 **. 이제는 기능 4를 ** 테스트 **에서 ** 마스터 **로 변경하고 나머지는 그대로 유지하고 싶습니까? –

+0

또한 두 개의 자주색 점과 병합하고 다른 노란색 점으로가는 노란색 점은 조금 어둡습니다. 그렇게 3 가지 커밋을 병합 할 수 있는지 확신 할 수 없지만 잘못 될 수 있습니다. –

답변

0

이것은 git cherry-pick의 표준 유스 케이스처럼 보입니다. 선택한 커밋 및 커밋 범위를 다른 분기에 적용 할 수있는 명령입니다. 당신이 적용해야하는 커밋 세트를 정확히 알고 있다고 말했기 때문에 이것은 작업을위한 완벽한 도구입니다.

git 1.7.2부터는 일련의 커밋을 선택할 수 있습니다. 마스터에 적용해야하는 기능 4는 SHA1s 12345에서 abc123까지의 커밋으로 표시됩니다. 그럼 그냥 해봐

git checkout master 
git cherry-pick 12345^..abc123 

첫 번째 커밋은 이전의 커밋이어야합니다. ^은 시작 부분이 범위에서 배타적이라는 사실을 처리합니다. 자세한 내용은 https://stackoverflow.com/a/1994491/2988730을 참조하십시오. 자식의 이전 버전

, 당신이 처리해야 할 것입니다 각각 개별적으로 커밋 :

git checkout master 
git cherry-pick 12345 
git cherry-pick df998 
... 
git cherry-pick abc123 

당신이, 당신의 커밋의 일부를 파괴하는 데 필요한 패치를 확인하는 git cherry-pick -n를 사용하여 않는 것이 밝혀지면 here에 설명 된대로 git add -p을 사용하여 원하는 청크를 가져옵니다.

git rebase --onto을 사용하여 동일한 작업을 수행 할 수도 있습니다. 이렇게하면 대화식으로 할 수있는 이점이 있습니다. 즉, 커밋을 선택하고, 메시지를 수정하며, 체리 따기보다 콘텐츠를 더 잘 제어 할 수 있습니다. 위에 링크 된 대답은이를 자세히 수행하는 방법을 설명합니다.