Заметки WEB-разработчика

Полезные материалы для web-разработки

Стратегия работы с git в больших компаних

Обычно работа в крупных конторах строится по такому алгоритму:

  • Создается ветка с названием таска (задания), нарпимер, feature/XXX-1
  • Отправка выполненого таска на ревью
  • Если ревью затролено, фиксы и повторная отправка на ревью
  • Если ревью одобрено, отправка на тест
  • Если тест не пройден, исправление ошибок и повторная отправка либо на ревью, либо сразу на тест (если правки незначительны)

Если количество разработчиков в проекте велико, то, как правило, после всех правок в таске, мы должны получить итоговый комит, отревертив прошлый, неудачный.

Предлагаю на рассмотрение алгоритм действий и манипуляций с гитом, который использую я.

Стратегия работы с git в больших компаних

На ревью первый раз

git pull dev
git checkout -b feature/XXX-1
#Работаем
git add .
git commit -m 'XXX-1 My task'
git push origin feature/XXX-1

На ревью повторно (если нужны правки)

# Удаляем удаленну ветку фичи
git push origin :feature/XXX-1
#Отменяем прошлый комит
git reset --soft HEAD~1
git add .
git commit -m 'XXX-1 My task fix'
git push origin feature/XXX-1

На тест первый раз

git checkout dev
git pull
#Комит из фичи перетягиваем вверх ветки dev
git rebase -i dev feature/XXX-1
git checkout dev
git merge feature/XXX-1
git pull --rebase origin dev && git push origin dev
#Смотрим последний комит и добавляем в отчёт таски
git log 
#Удаляем ветку с фичей
git branch -D feature/XXX-1
git push origin :feature/XXX-1

На тест повторно (если нужны правки)

#Находимся в ветке feature/XXX-1
#Делаем правки 
git add .
git commit -m 'XXX-1 My task'
git push origin feature/XXX-1

git checkout dev
git pull
#Комит из фичи перетягиваем вверх ветки dev
git rebase -i dev feature/XXX-1
git checkout dev
git merge feature/XXX-1
git pull --rebase origin dev && git push origin dev
git log

#Вспоминаем прошлый комит ветки dev, мы его записывали в отчет с таски
#Смотрим нынешнийынешний комит на dev в git log
#Отменяем последние изменения в комитах
#Нынешний
git revert
#Прошлый  
git revert 
#Удаляем ветку фичи
git branch -D feature/XXX-1
git push origin :feature/XXX-1
#Создаем заново
git checkout -b feature/XXX-1

#В прямой последовательнгости комитов делаем cherry pick (Перносим изменения из dev на фичу):

git cherry-pick хеш прошлого комита в dev (Берем с отчета в таске)
git cherry-pick хеш нынешнего комита в dev (Берем с git log)

#сбрасываем 2 наших перенесенных комита
git reset HEAD~2 --soft

#Применяем комит
git add . 
git commit -m 'XXX-1 My task'
git push origin feature/XXX-1

#Переносим в dev 
git checkout dev
git merge feature/XXX-1
git pull --rebase origin dev && git push origin dev
git log (хеш комита и в задачу)

git branch -D feature/XXX-1
git push origin :feature/XXX-1

Возможно, сей алгоритм не идеален, буду рад конструктивной критике

Комментарии

Комментарии через Вконтакте