Ситуация: В локальном репозитории (локально или на сервере) часть файлов стала новой версии, но в ГитЛабе эти файлы уже обновлены другими изменениями и получились в рассинхрон версий.
В таком случае будет ошибка:
$ git pull origin deploy
branch deploy -> FETCH_HEAD
Updating bf189c3..1c50636
error: Your local changes to the following files would be overwritten by merge:
company/index.php
Вариант 1 — просто выбросить локальные изменения (самый простой)
Если локальные правки в этих файлах тебе точно не нужны:
bash
git checkout -- company/index.php local/css/style.css git pull origin deploy
Или сразу все изменения в рабочей директории:
bash
git reset --hard HEAD git pull origin deploy
⚠️ reset --hard снесёт все незакоммиченные изменения во всех файлах, не только в этих двух.
Вариант 2 — через stash (если вдруг пригодятся)
bash
git stash git pull origin deploy # если старые правки не нужны — удалить stash: git stash drop
Вариант 3 — жёстко перезаписать файлы версией из удалённой ветки
bash
git fetch origin deploy git checkout origin/deploy -- company/index.php local/css/style.css git pull origin deploy
Это вытащит файлы именно из origin/deploy и перезапишет локальные.
Вариант 4 — если файлы вообще не должны отслеживаться
Если эти файлы правятся локально на сервере и в git тебе не нужны — добавь их в .gitignore и убери из индекса:
bash
git rm --cached company/index.php local/css/style.css echo "company/index.php" >> .gitignore echo "local/css/style.css" >> .gitignore
Но судя по твоему вопросу — тебе нужен Вариант 1 или 3: ты хочешь, чтобы файлы перезаписались версией из git.
Рекомендуется для этого случая
bash
git fetch origin deploy git checkout origin/deploy -- company/index.php local/css/style.css git pull origin deploy
Это точечно перезапишет только два проблемных файла версией из удалёнки, остальное не тронет.
