이것은 까다로운 문제이지만 많은 사람들이 직면하는 문제입니다. Gitflow 설정을 시작점으로 사용하는 것이 좋습니다.
개발-> 새로운 작업중인
마스터-> 테스트가 필요한 완성 된 프로덕션 프로덕션-> 프로덕션에 게시 된 항목.
사소한 (더 짧은) 기능에서 나는 개발에서 브랜치를 만들고 거기서 작업을 수행 한 다음 브랜치를 다시 개발로 병합합니다.
주요 (장기) 기능에서 개발에서 분기를 만들고 해당 분기에서 더 작은 분기를 만든 다음 첫 번째 분기로 다시 병합합니다. 주요 기능이 완성되면 개발 지점으로 돌아갑니다.
정기적으로 (프로젝트에 따라) 개발을 다시 마스터로 병합하고 테스트주기를 시작합니다. 테스트에서 수정 프로그램이 나오면 마스터 브랜치 (하위 브랜치)에서 수행됩니다. 그리고 테스트하는 동안 마스터 지점에서 개발을 계속할 수 있습니다.
마스터는 언제든지 개발에 병합되어야하며 개발은 장기 하위 지점 중 하나로 병합되어야합니다.
마스터는 항상 이론적으로 생산 준비가되어 있어야합니다. 개발은 항상 이론적으로 생산 준비가되어 있어야합니다. 테스터가 테스트 할 견고한 기능 세트를 제공하는 데 차이가있는 유일한 이유입니다.
준비가되면 테스트 된 마스터 커밋이 프로덕션으로 병합되고 프로덕션의 배포는 해당 지점에서 발생합니다. 그런 다음 비상 상황에서 수행해야하는 HOTFIX는 마스터로 병합하지 않고도 생산 지점에서 수행 할 수 있습니다 (테스트되지 않은 많은 변경 사항이있을 수 있음).
내 보통 나무는
LongTerm -> Development -> Master -> Production
LongTerm <- Development | |
| Development -> Master |
LongTerm <- Development -> Master |
Development <- Master |
Master -> Production
단일 변경이 몇 시간 이상 걸리지 않아야한다는 것이 나의 일반적인 규칙입니다. 그렇다면 더 작은 변경이 필요합니다. UI 재 작성과 같은 거대한 기능인 경우 정상적인 개발을 동시에 계속할 수 있도록 장기적으로 진행됩니다. 장기 분기는 일반적으로 로컬 분기이며 개발, 마스터 및 프로덕션은 원격 분기입니다. 하위 지점도 로컬입니다. 이것은 장기적인 기능 세트에서 git의 유용성을 잃지 않고 다른 저장소를 깨끗하게 유지합니다.
그러나 장기 브랜치의 존재는 드물다는 점에 주목하고 싶습니다. 일반적으로 모든 작업은 개발 중입니다. 정상적인 개발 작업을 수행 할 수 있어야하는 기능 (세트)이 오래 걸릴 때만 LongTerm 분기를 사용합니까? 함께해야 할 일련의 변경 사항 인 경우 모든 작업이 완료 될 때까지 마스터로 병합하지 않습니다.