Что внутри .git
Что внутри .git
Что внутри .git
diff
Commits
Commits
Commits
Branches
Merge
Merge
Merge
Pull Request
Log
git log -p --graph
# -p : показать правки
# --graph : показать истории веток
Кто виноват?
git blame
Кто виноват?
git blame
git blame <file>
Совместная разработка
Совместная разработка
GIT. что почитать?
Классика
Советую (english)
Continuous Integration
Все пушат прямо в master (main)
git clone ssh://user@host/path/to/repo
git add <some-file>
git commit
git push origin main
Важно всегда работать с последней версией master (main) чтобы не было конфликтов.
git pull
# vi /path/to/file
git add /path/to/file
git commit && git push origin main
pull rebase
Используя rebase во время pull вы не будете создавать дополнительный merge-коммит.
git pull --rebase origin main
Или настроить автоматический ребейз
git config pull.rebase true
Разрешение конфликтов
git status
# редактируете файлы с конфликтами
git add <file>
git rebase --continue
Git Feature Branch Workflow
Для каждой новой фичи или задачи создаётся новая ветка. Затем ветка сливается в основной код в master (main)
git checkout -b features/feature-xxx
# редактируем код
git add <files>
git commit
git push -u origin features/feature-xxx
Правила работы с ветками
Должно быть общее правило именования feature веток.
feature/<feature_name>
task/
Правила работы с ветками
Всегда начинайте feature ветку от текущего состояния основной ветки.
git pull # git pull --rebase
git branch -b feature/<feature_name>
Правила работы с ветками
Перед созданием PR вливайте изменения из основной ветки. Все конфликты должны быть решены в вашей ветке!
git fetch origin main
git rebase
Правила работы с ветками
Долгоживущие feature ветки зло.
Держите не более 1-2 дней. Для этого четко описывайте задачу, которую хотите решить в ветке.
Правила работы с ветками
Пишите тесты на свой код!
После разрешения конфликтов слияния они вам здорово помогут.
GitFlow
- Данная модель отлично подходит для организации рабочего процесса на основе релизов.
- Работа по модели Gitflow предусматривает создание специальной ветки для исправления ошибок в рабочем релизе.
Правила работы с GitFlow
- Релизная ветка (master, main, trunk).
- Всегда стабильна, готова к работе в любой момент времени.
- Работают только лиды/синьоры.
- Изменения только через Pull Request (PR) из develop или hot-fix веток.
- Основная ветка разработки (develop).
- Допускается краткосрочная неработоспособность.
- Работает вся команда.
- Изменения напрямую или через PR из функциональных веток.
- Функциональные ветки (feature/), они же фича ветки.
- Под каждого разработчика/фичу.
- Изменения напрямую.
- Порождается от develop ветки.
Gerrit
Gerrit это надстройка над GIT сервером. Он дополнительно даёт вам
- Code Review
- Контроль доступа к бранчам
- История правок не засоряет log
Gerrit UI
Литература
DevOps
- Coding
- Building
- Testing
- Deploying (packaging, releasing)
Автоматизация DevOps
Спринт 10: Командная работа
Избегаем блокировок
-
В первую очередь пишем модели БД.
- Лучше всего, если каждая модель в отдельном файле.
- Если модель для ForeignKey не существует, допустимо сделать IntegerField, затем заменить на ForeignKey.
-
Если ваша ветка живет более 4-х часов, то вливайте изменения из основной ветки дважды в день. Все конфликты должны быть решены в вашей ветке!
-
Поддерживайте тесную связь. Синхронизация Pull Request-ов, правок кода сильно ускорит работу над проектом. Задача лида быть всегда в курсе что происходит с проектом, кто над чем работает.
-
Никогда не изменяйте историю
git push -f
Командные процессы
- Ежедневные встречи (daily meetings). Если нужна помощь в проведении, приглашайте наставников.
- Планирование в начале проекта и по необходимости в ходе работы.
- Совместная работа в трекере задач (Trello/Jira и т.п.).
- Команда обсуждает вопросы, по которым требуется помощь и делегирует лиду обсуждение этих вопросов с наставником.