git-flow가 해결하려는 핵심은 주어진 브랜치의 역할과 브랜치 및 병합 대상에 대해 추론하는 능력이었습니다.
이상적으로는 모든 브랜치가 병합 된 코드 라인으로 다시 병합됩니다. 이것은 일반적으로 메인 라인에서 병합입니다 (git-flow에서 이것은입니다 dev
). 기능 브랜치 분기 및 dev에서 병합, 브랜치 분기 브랜치 및 dev에서 병합 (에 대한 추가 병합 master
). 핫픽스는 지점에서 병합하고 마스터에서 병합합니다 (추가 병합은 다시 dev로).
각 코드 라인은 부모로부터 분기되어 다시 병합됩니다. 코드 라인은 수 는 필요한 경우 언제든지 다른 codelines에서 코드를 빼냅니다.
피처 브랜치의 브랜치가 "그 피처 브랜치에서 문제를 해결하는이 방법을 탐색하고 싶습니다"라면 완벽하게 좋습니다. 기능 분기에서 분기하고 일부 코드를 커밋하고 기능 분기로 다시 병합합니다 (또는 버림).
- 기능에서 분기
- 아이디어를 탐구
- 기능에 병합
그러나 피하고 싶은 것은 다음과 같습니다.
- 필요한 기능에서 분기
- 코드 작업
- 필요한 기능이 완료되면 개발자와 병합
- 기능 분기에서 기능 (및 추가 커밋) 확인
- 개발자와 병합
그 이유는 시작과 끝이 일치하지 않기 때문입니다. 이것이 무엇인지 그리고 무엇인지 이해하기가 조금 더 어려워집니다. 불가능하지는 않지만 누군가의 역할을 이해하는 데 약간의 시간이 더 걸립니다.
그러나 이것이 아직 dev에서 찾을 수없는 코드에 의존하는 새로운 기능인 경우 흐름은 다음과 같아야합니다.
- dev에서 분기
- 필요한 기능에서 병합
- 코드 작업
- 필요한 기능이 완료되면 개발자와 병합
- 기능 분기에서 기능 (및 추가 커밋) 확인
- 개발자와 병합
이것은 dev에서 분기로 시작하여 dev 로의 병합으로 끝납니다.
아마도 가장 좋은 방법은 한 기능에서 다른 기능으로의 병합을 피하는 것입니다. 기능을 분기하고 필요한 예비 작업을 수행하고 기다립니다.
- dev에서 분기
- 코드 작업
- 필요한 기능이 완료되면 개발자와 병합
- 기능 분기에서 기능 (및 추가 커밋) 확인
- 개발자와 병합
이는 가장 안정적인 분기 및 코드 세트를 제공합니다.
향후 작업에서 고려해야 할 사항은 구현 코드가 완전하지 않더라도 다른 기능과의 상호 운용성을 위해 필요한 인터페이스를 게시하는 기능을 보유하는 것입니다. 이것은 dev로 병합 된 다음 필수 기능은 미래 기능과 마찬가지로 해당 인터페이스에서 작동 할 수 있습니다. 이를 통해 필요한 기능이 개발자와 병합되기를 기다려야 할 때보 다 미래 기능이 인터페이스에 대한 코딩, 인터페이스를 구현하는 스텁에 대한 테스트 등을 더 진행할 수 있습니다.