114 lines
3.2 KiB
Markdown
114 lines
3.2 KiB
Markdown
|
|
---
|
|||
|
|
url: /template-sync-strategy/workflows/update-template.md
|
|||
|
|
description: >-
|
|||
|
|
Повторяемый процесс доставки изменений шаблона в приложение после первичной
|
|||
|
|
настройки.
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Обычное обновление шаблона
|
|||
|
|
|
|||
|
|
Эта инструкция подходит после любого стартового сценария:
|
|||
|
|
|
|||
|
|
* [Новый проект от шаблона](../setup/clean-repository.md).
|
|||
|
|
* [Миграция существующего master](../setup/existing-master-migration.md).
|
|||
|
|
|
|||
|
|
Целевой маршрут:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
templates/master -> template -> sync/* -> master
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 1. Обновить слепок шаблона
|
|||
|
|
|
|||
|
|
В репозитории приложения:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd /path/to/app-repo
|
|||
|
|
git switch template
|
|||
|
|
git pull --ff-only
|
|||
|
|
git push
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Этот вариант работает, если для ветки `template` настроено:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
pull из templates/master
|
|||
|
|
push в origin/template
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Явная форма без зависимости от tracking-настроек:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git fetch templates
|
|||
|
|
git switch template
|
|||
|
|
git merge --ff-only templates/master
|
|||
|
|
git push origin template
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Если `--ff-only` падает, значит `template` перестал быть чистым слепком шаблона. Остановитесь и разберите причину до продолжения.
|
|||
|
|
|
|||
|
|
Проверьте, что `origin/template` обновился до шаблона:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git fetch origin
|
|||
|
|
git fetch templates
|
|||
|
|
git --no-pager log --oneline -1 origin/template
|
|||
|
|
git --no-pager log --oneline -1 templates/master
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Оба коммита должны совпадать.
|
|||
|
|
|
|||
|
|
## 2. Создать ветку обновления приложения
|
|||
|
|
|
|||
|
|
После обновления `template` создайте временную ветку от текущего приложения:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git fetch origin
|
|||
|
|
git switch -c sync/update-template-v2 origin/master
|
|||
|
|
git merge origin/template
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Имя ветки можно менять под версию или дату:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
sync/update-template-v2
|
|||
|
|
sync/update-template-2026-05-09
|
|||
|
|
sync/update-template-1.8.0
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Проверьте, что временная ветка реально отличается от `origin/master` изменениями шаблона:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git --no-pager diff --stat origin/master...HEAD
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Если diff пустой, значит обновлённый `origin/template` не был влит в `sync/*` ветку или в шаблоне нет новых изменений.
|
|||
|
|
|
|||
|
|
## 3. Решить конфликты
|
|||
|
|
|
|||
|
|
Если есть конфликты, решайте их именно в `sync/*`.
|
|||
|
|
|
|||
|
|
После решения конфликтов:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git add .
|
|||
|
|
git commit
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Если конфликтов не было, Git сам создаст merge-коммит или выполнит fast-forward, в зависимости от истории.
|
|||
|
|
|
|||
|
|
## 4. Запушить sync-ветку
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git push -u origin sync/update-template-v2
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Дальше откройте PR/MR:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
source: sync/update-template-v2
|
|||
|
|
target: master
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Правила merge описаны в [Review и merge](./review-and-merge.md).
|