Git - оптимізуємо роботу за допомогою gitflow

Всім привіт. У цьому уроці ми розглянемо як автоматизувати workflow, який ми з вами розібрали в минулому уроці. Руками створювати фичи, хотфікси і релізи кожен день досить довго, а дії завжди одні й ті ж. Тому існує багато всяких можливостей зробити це зручнішим.

У цьому уроці ми з вами розберемо що таке gitflow. Для установки gitflow на мак потрібно всього лише написати

Так як він у мене вже встановлено, то я його встановлювати не буду. Про установку на інших операционках можна почитати в Офіційний ріпі. У розділі Installation instruction написано як встановлювати його на все операційки.

Тепер нам потрібно форматувати gitflow в нашому репозиторії.

Для цього напишемо

І нам задають тут питання як ми хочемо назвати майстер, Девелоп, хотфиксов і реліз гілки. Можна сміливо натискати enter у відповідь на всі питання. Питання закінчилися і тепер у нас инициализирован gitflow.

Тепер давайте створимо нову фічу, як ми робили в минулому уроці.

Як ми бачимо відразу відбулося дуже багато. У нас створилася нова гілка feature / implement-registration. Нам не потрібно вказувати приставку feature, так як вона дозволяє автоматично визначити. І воно нам перекинуло на створення гілку. І коли ми закінчимо працювати з цією гілкою нам потрібно написати git flow feature finish.

Тепер Зробити якісь зміни. Створимо файл register.js і додамо туди якусь функцію.

Тепер закоммітім наші зміни.

І пишемо, що хочемо закінчити фичу

Ця команда автоматично мерджіт фичу в develop, видаляє стару гілку і переключається на develop. І все це в одну команду.

Якщо ми подивимося git log, то ми побачимо, що наш коментар щодо цього додався.

Тепер давайте створимо реліз, як ми робили в минулому уроці.

Воно нам говорить, що у нас є гілка релізу 1.0, яка не була нормально завершена. Це тому, що ми її ніяк не закрили і не видалили і вона у нас висить з минулого уроку.

Якщо ми напишемо git branch, то побачимо, що у нас висить гілка release / 1.0. Давайте її просто видалимо

Тепер якщо ми спробуємо стартанути реліз, має бути все нормально. Як ми бачимо, нас перекинуло на гілку release / 1.1. І воно нам говорить, зробіть необхідні зміни до релізу і коли закінчите натисніть finish.

І так як нам не потрібно робити ніяких змін пишемо

Що зробила команда finish в цей раз? Вона смерджіла реліз в майстер і develop, поставив тег 1.1 і видалила гілку. Тобто все, що ми робили в кілька команд в минулому уроці вона зробила в одну.

Якщо ми хочемо зробити хотфиксов для продакшена то ми пишемо

Робимо наш хотфиксов. Наприклад видаляємо прогалини в файлі register.js. Робимо Комміт і пишемо finish

Це мерджіт гілку одночасно в майстер і Девелоп і видаляє гілку.

І тепер трохи про те, що таке теги. Якщо ми напишемо команду

Якщо ми зараз напишемо git tag, то побачимо, що у нас додався тег 1.2.

Це створило нам мітку точно на той Комміт, який був на гілці в той момент, коли ми написали команду. Тепер якщо ми напишемо

Це створить нам нову гілку з тега. І візьме останнім коммітов, той, який був останнім, коли ми написали цю команду. Тепер абсолютно завжди цей тег 1.2 буде існувати і ми завжди можемо створити нову гілку з цього тега.

І остання команда, яка може бути корисна. За замовчуванням, якщо ви напишете git push, воно пушіт тільки гілки і не пушіт теги. Щоб запущено теги напишемо

Тепер ми запущено наші теги і бачимо повідомлення, що у нас склалося 3 нових тега, нам вони доступні на гітхабе, їх можна хилити разом з репозиторієм і їх можуть використовувати інші люди.