Джон Перді має правильну ідею. git flow
полегшує і власне управління цими філіями, і управління філіями є аргументом для переходу git
.
Почнемо з базового проходу git
, оскільки ви приїжджаєте з точки зору svn
-to- 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
коміти мають проблеми зі складанням або тестовими помилками, оскільки вони залишаться без тегів.