- добавлены каноны и VitePress-сайт стратегии обновления шаблонов - подключена карточка документации на главной странице - добавлены сборочные скрипты, Caddy-маршрут и Docker-сборка - добавлена git-иконка для карточки и сгенерированы публичные артефакты
103 lines
3.5 KiB
Markdown
103 lines
3.5 KiB
Markdown
---
|
||
url: /template-sync-strategy/reference/troubleshooting.md
|
||
description: Типовые ошибки при обновлении проекта от шаблона и способы диагностики.
|
||
---
|
||
|
||
# Troubleshooting
|
||
|
||
## fatal: отказ слияния несвязанных историй изменений
|
||
|
||
Ошибка:
|
||
|
||
```text
|
||
fatal: отказ слияния несвязанных историй изменений
|
||
```
|
||
|
||
Причина: `master` приложения не был создан от `template`, поэтому у веток нет общего предка.
|
||
|
||
Решение: выполнить одноразовую миграцию через `sync/bootstrap-template` по инструкции [Миграция существующего master](../setup/existing-master-migration.md).
|
||
|
||
Коротко:
|
||
|
||
```bash
|
||
git switch -c sync/bootstrap-template origin/master
|
||
git merge --allow-unrelated-histories origin/template
|
||
git push -u origin sync/bootstrap-template
|
||
```
|
||
|
||
## --ff-only падает на template
|
||
|
||
Ошибка возникает при команде:
|
||
|
||
```bash
|
||
git merge --ff-only templates/master
|
||
```
|
||
|
||
Причина: в `template` появились коммиты, которых нет в шаблоне. Значит ветка перестала быть чистым слепком.
|
||
|
||
Что проверить:
|
||
|
||
```bash
|
||
git fetch templates
|
||
git --no-pager log --oneline --graph --decorate templates/master..template
|
||
```
|
||
|
||
Решение зависит от причины. Не продолжайте обновление, пока не станет понятно, какие локальные коммиты попали в `template`.
|
||
|
||
## Пустой diff в sync-ветке
|
||
|
||
Симптом:
|
||
|
||
```bash
|
||
git --no-pager diff --stat origin/master...HEAD
|
||
```
|
||
|
||
не показывает изменений.
|
||
|
||
Возможные причины:
|
||
|
||
* в шаблоне нет новых изменений;
|
||
* `origin/template` не был обновлён;
|
||
* `origin/template` не был влит в `sync/*`;
|
||
* sync-ветка создана не от актуального `origin/master`.
|
||
|
||
Что проверить:
|
||
|
||
```bash
|
||
git fetch origin
|
||
git fetch templates
|
||
git --no-pager log --oneline -1 origin/template
|
||
git --no-pager log --oneline -1 templates/master
|
||
git --no-pager log --oneline --graph --decorate --all --max-count=50
|
||
```
|
||
|
||
## Случайно включили squash
|
||
|
||
Если sync-PR/MR уже влит squash-merge, история шаблона могла не сохраниться как нормальная merge-связь.
|
||
|
||
Что сделать:
|
||
|
||
* зафиксировать факт в описании проекта;
|
||
* проверить, видит ли Git последующие обновления шаблона без повторного применения старых изменений;
|
||
* при следующем обновлении внимательно смотреть diff и конфликты;
|
||
* для будущих sync-PR/MR отключить squash.
|
||
|
||
Если ситуация стала неуправляемой, может потребоваться отдельная техническая миграция истории.
|
||
|
||
## cannot run less
|
||
|
||
Ошибка:
|
||
|
||
```text
|
||
cannot run less
|
||
```
|
||
|
||
Причина: Git пытается открыть pager `less`, которого нет в системе.
|
||
|
||
Решение: использовать `git --no-pager`:
|
||
|
||
```bash
|
||
git --no-pager log --oneline --graph --decorate --all --max-count=50
|
||
git --no-pager diff template...master
|
||
```
|