Ситуация: В локальном репозитории (локально или на сервере) часть файлов стала новой версии, но в ГитЛабе эти файлы уже обновлены другими изменениями и получились в рассинхрон версий.

В таком случае будет ошибка:
$ 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

Это точечно перезапишет только два проблемных файла версией из удалёнки, остальное не тронет.

От admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *