GitTown
Published: 13 October 2024
Tagged:
Git

Знакомая ситуация: кто-то пишет в рабочем чате — “я внёс изменения, ребейзнитесь, пожалуйста”. Приходится прерывать работу, выполнять несколько команд для обновления. Это рутина, которая отвлекает. Я решил найти решение и обнаружил, что их много. После изучения нескольких вариантов я выбрал GitTown — инструмент, который ускоряет рутинные задачи при работе с Git.



Trunk-Base

Используя trunk-based development, который подразумевает регулярное слияние изменений из рабочих веток в основную, поддерживая её актуальной и рабочей.

Для каждой новой фичи, исправления или улучшения создается отдельная ветка и сливается в основную, как только работа завершена.

Использую ребейз, чтобы сохранять историю чистой, а множество мелких коммитов объединяю в один (squash-commit). Это упрощает процесс интеграции и помогает избежать сложностей при слиянии в активно изменяемом репозитории.

Поэтому cинхронизация с основной веткой происходит довольно часто, а если добавить использование подхода stacked branch это может отнимать много времени и превращаться в рутину.



Новая фича ветка

Находясь в рабочей ветке current-feature, я могу выполнить git town hack feat/mob-1-test-fix. Эта команда автоматизирует несколько рутинных операций: сначала синхронизирует основную ветку с удалённой (чтобы избежать конфликтов в будущем), затем создаст новую ветку от обновлённой основной и автоматически переключит меня на неё.

~ on [current-feature] git town hack feat/mob-1-test-fix

[current-feature] git fetch --prune --tags
[current-feature] git checkout develop
[develop] git rebase origin/develop
[develop] git checkout -b feat/mob-1-test-fix

~ on [feat/mob-1-test-fix]

Лог команды hack 👆


Быстрая синхронизация

Работая в feature-ветке, нужно обновить основную ветку и выполнить ребейз для интеграции последних изменений. Команда git town sync автоматизирует этот процесс: обновляет основную ветку и выполняет ребейз, упрощая синхронизацию.

~ on [MOB-current-feature] git town sync

[MOB-current-feature] git fetch --prune --tags
[MOB-current-feature] git checkout develop
[develop] git rebase origin/develop
[develop] git checkout MOB-current-feature
[MOB-current-feature] git rebase develop
[MOB-current-feature] git push -u origin MOB-current-feature

~ on [MOB-current-feature]

Лог команды sync 👆


Stacked branshes

Наиболее удобно использовать команду stacked branch. Чтобы добавить новую функцию на основе текущей ветки, просто выполните команду append. Структуру веток можно просмотреть с помощью команды branch.

Далее, перейдите на последнюю ветку в стеке и запустите git town sync. Эта команда синхронизирует все ветки последовательно — начиная с основной и заканчивая текущей.

~ on [MOB-current-feature] git town branch

 develop
   mob-1-current-feature
*    mob-2-add-more-ui

Лог команды branch 👆