Jon Purdy는 올바른 아이디어를 가지고 있습니다. git flow뿐만 아니라 이러한 지점의 실제 관리가 쉬워지고 지점 관리는로 이동하기위한 논쟁입니다 git.
의는의 기본 개요부터 시작하자 git당신이에서오고있어 이후, svnDi의 git관점. git다음을 고려하십시오 .
master--...............-.....-..............-
\ / / /
---develop---------............../
\ /
--feature---
위에서,로 분기 master하고 develop(로 표시 \) 분기 develop로 feature분기합니다. 분기를 따라 /커밋 ( -)을 사용하여 해당 분기를 백업 (으로 표시 )으로 병합합니다 . (커밋이 없지만 병합이 올바른 방법 인 경우 다음 커밋이 다음 커밋 .임을 나타내는 표시기 가 있습니다 -).
충분히 쉽다. 메인 릴리스에 핫픽스가 있으면 어떻게합니까?
master--...............-.....-................-...........-.........-
\ / / / \ /| /
\ / / / -hotfix-- V /
---develop---------............../..............-...----
\ / \ V /
--feature--- --feature2...----
에서 develop분기했습니다 master. 에서 발견 된 버그는에서 master분기하여 수정 한 master후 다시 병합하여 수정되었습니다 master. 우리는 합병 master에 develop, 다음 develop에feature2 에서 새 코드를 압연하는, hotfix이 지점에.
로 feature2다시 병합하면 develop이력에 develop와가 포함 됩니다 hotfix. 마찬가지로, develop로 병합 feature2에서 새 코드 master때문에 병합, develop다시 master그것을 기반으로로 그 커밋에 차질없이 일어날 master그 시간대로에서 분기 한 경우에 master그 시점에서.
여기 또 다른 방법이 있습니다.
master--..........-........-
\ /\ /
---1.0-- --1.1--
귀하의 1.0 릴리스는 tagged- 얻을 1.0.1, 1.0.2, 1.0.3, 등.
이제 여기 트릭이 있습니다. 1.0에서 버그를 발견했으며 1.1, 1.2 및 1.3에 영향을 미칩니다. 너 뭐하니?
최신 또는 가장 빠른 유지 보수 릴리스를 분기하고 수정하십시오. 그럼 당신은 당신의 새로운 병합 hotfix에 지점 1.3에 - 그리고 1.2, 1.1하고 1.0. 각 유지 관리 버전 분기에서 분기하지 마십시오. 병합하지 않는 1.0으로 master또는 병합 master뒷면에 1.0. 하나의 hotfix브랜치를 가져와 모든 버전 브랜치에 병합하십시오. 충돌이 있으면 알려줄 것입니다. 코드가 올바른지 확인하십시오 ( git diff친구).
이제 특정 변경 사항이 모든 곳에 적용됩니다. 계보는 분기되어 있지만 괜찮습니다. 우연이 아닙니다. 1.3헤드에 1.3.17 태그를 지정하고 에서 분기 된 모든 진행중인 피쳐에 병합 한 다음 계속하십시오 1.3.
git flow확장은 이러한 유지 보수, 기능 및 핫픽스 가지를 관리 할 수 있습니다. 워크 플로우가 다운되면 이것은 사소한 것이며 소스 코드 관리에서 많은 문제를 일으 킵니다.
나는 이것이 프로그래밍 팀에서 수행되는 것을 보았지만 프로그래머로서 그렇게 깊이 일하지는 않았으므로 여전히 일상적인 워크 플로우를 둘러보고 있습니다.
git태그를 추가하도록 할 수 있습니까? 이는git태그가 유지되지 않기 때문에 빌드 커밋 또는 테스트 실패가 있는 커밋을 실제로 명확하게한다는 이점이 있습니다 .