Skip to content

Troubleshooting

fatal: отказ слияния несвязанных историй изменений

Ошибка:

text
fatal: отказ слияния несвязанных историй изменений

Причина: master приложения не был создан от template, поэтому у веток нет общего предка.

Решение: выполнить одноразовую миграцию через sync/bootstrap-template по инструкции Миграция существующего master.

Коротко:

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