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. Эта команда автоматизирует несколько рутинных операций: сначала синхронизирует основную ветку с удалённой (чтобы избежать конфликтов в будущем), затем создаст новую ветку от обновлённой основной и автоматически переключит меня на неё.
Лог команды hack 👆
Быстрая синхронизация
Работая в feature-ветке, нужно обновить основную ветку и выполнить ребейз для интеграции последних изменений. Команда git town sync автоматизирует этот процесс: обновляет основную ветку и выполняет ребейз, упрощая синхронизацию.
Лог команды sync 👆
Stacked branshes
Наиболее удобно использовать команду stacked branch. Чтобы добавить новую функцию на основе текущей ветки, просто выполните команду append. Структуру веток можно просмотреть с помощью команды branch.
Далее, перейдите на последнюю ветку в стеке и запустите git town sync. Эта команда синхронизирует все ветки последовательно — начиная с основной и заканчивая текущей.
Лог команды branch 👆