У Джона Перди правильная идея. git flow
также упрощает фактическое управление этими филиалами, а управление филиалами является аргументом для перехода к git
.
Давайте начнем с основным выбегом git
, так как вы пришли с svn
-До- git
точки зрения. Учтите git
следующее:
master--...............-.....-..............-
\ / / /
---develop---------............../
\ /
--feature---
Выше вы переходите master
на develop
(обозначается \
) и переходите develop
на feature
ветку. Мы объединяем эти ветви обратно (обозначается /
) с помощью commits ( -
) вдоль ветви. (Если коммита нет, но слияние направо, есть .
индикаторы, показывающие, что -
следующий коммит следующий).
Достаточно просто. Что если у нас есть исправление в нашем основном выпуске?
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
определить, какие коммиты имеют проблемы со сборкой или неудачные тесты, поскольку они остаются без тегов.