여기에 몇 가지 문제가있는 것 같습니다.
1. 특정 릴리스의 기능 식별
이것은 프로젝트 관리 문제이며 조정 문제입니다. 윌 이 기능은 동시에, 이전에 출시 된, 또는이 이후에 할 다른 기능? 릴리스가 한 번에 하나의 기능을 수행하려면 해당 기능을 식별하십시오. 기능이 릴리스로 그룹화 될 경우 그룹화가 무엇인지 파악하고 개발자 및 의사 결정자에게 이를 적용하십시오 . 문제 추적 또는 발권 시스템을 사용하여 릴리스에 태그를 지정하십시오. 특정 릴리스의 기능 중 하나라도 문제가없는 경우 모든 기능이 있음을 분명히하십시오.
2. 분기 전략
Git-flow 는 이와 같은 문제에 대한 쉬운 대답이며, 사람들은 git-flow의 변형을 사용합니다. 나는 그것이 모든 문제에 대한 포괄적이라고 말하지는 않지만 많은 도움이됩니다.
비결정론 적 출시 전략에서 문제가 발생하는 것으로 보입니다. 기능은 분산 산포로 승인되었으며 오래 전에 개발을 시작한 것이 더 최근에 시작된 무언가-도약-개구리 기능 이후에 릴리스 될 수 있습니다.
수명이 긴 기능 분기 또는 동시 릴리스 분기는 아마도 이러한 종류의 문제에 가장 적합한 답변 일 것입니다. 마스터 에서 최신 지사로 최신 정보 를 병합 (또는 편안한 경우 리베이스)하십시오 . 이미 존재하는 기능 만 병합 하도록주의하십시오 . 그렇지 않으면 현재 발생한 문제 (한 지점에 너무 많은 혼합 된 기능)가 발생합니다.
"핫픽스"또는 "버그 픽스"분기는이 프로세스의 필수 부분입니다. QA주기가 짧은 소규모 일회성 수정에 사용하십시오.
설명에서 공식적인 '개발'브랜치를 유지 하지 않는 것이 좋습니다 . 오히려, 모든 기능을 마스터에서 분기하고 릴리스가 식별되면 병합 된 릴리스 분기를 작성하십시오.
3. 환경
프로덕션 == 마스터를 제외하고 git 브랜치를 환경과 일치시키지 마십시오. '개발'지점은 고장난 것으로 가정해야합니다. 릴리스 브랜치는 QA 환경이든 스테이징 환경이든 테스트 환경으로 푸시됩니다. 필요한 경우 특정 기능 분기를 환경으로 푸시하십시오.
별도로 릴리스해야하지만 동시에 테스트중인 기능 분기가 둘 이상있는 경우 ..... ¯ \ _ (ツ) _ / ¯ .... 다른 서버를 가동 하시겠습니까? 어쩌면 그것들을 함께 버림 지점으로 병합 할 수도 있습니다. 원래 브랜치에 대한 수정 / 변경 사항을 커밋하고 다시 버림 지점으로 다시 병합하십시오. 개별 릴리스 지점에서 최종 승인 및 UAT를 수행합니다.
분기에서 승인되지 않은 기능 제거
이것은 의심 할 여지없이 시도하고 행해야 할 가장 고통스러운 일이기 때문에 위의 생각들이 피하려고하는 것입니다. 운이 좋으면 병합 커밋을 사용하여 기능이 개발 또는 테스트 브랜치에 병합되었습니다. 운이 좋지 않으면 개발자는 개발 / 테스트 지점에 직접 헌신했습니다.
어느 쪽이든, 당신이 출시를 준비하고 승인되지 않은 변경 사항이있는 경우, 당신은 할 수 힘내를 사용해야합니다 밖으로 다시 릴리스 지점에서 그 승인되지 않은 커밋; 가장 좋은 아이디어는 릴리스 를 테스트 하기 전에 수행하는 것입니다.
행운을 빌어 요.