zaLinux.ru

Ошибки git «Your local changes to the following files would be overwritten by merge» и «Please commit your changes or stash them before you merge» (РЕШЕНО)


Чтобы синхронизировать (обновить) свой локальный репозиторий с удалённым, используется команда:

git pull

Но она может закончиться неудачей и вызвать следующую ошибку:

Updating ecba8b8..fcd9016
error: Your local changes to the following files would be overwritten by merge:
	data/cf-subnet.txt
Please commit your changes or stash them before you merge.
Aborting

Суть ошибки в том, что на удалённом репозитории сделаны изменения, но они не могут быть приняты, поскольку в вашем локальном репозитории тоже сделаны изменения и в результате если будут приняты обновления, то ваши локальные данные потеряются.

Такое может произойти по разным причинам, например, вы чуть подправили файл, или вы подготовили изменения для отправки на удалённый репозиторий и отправили их (сделали commit), но эти изменения ещё не приняты. В любом из этих случаев вы столкнётесь с этой ошибкой.

В ошибке показан проблемный файл (в данном случае это data/cf-subnet.txt), для проверки, были изменения на удалённом репозитории или в вашем локальном репозитории, вы также можете использовать команду:

git checkout

Она также покажет список не синхронизированных файлов.

Подсказка в ошибке предлагает сделать commit или stash.


Но вариантов исправить эту ошибку четыре.

1. Отправить изменения (сделать commit)

git commit -m "My message"

2. Сделать stash

Если вы не знаете, что такое stash, то stash это как стек, временное хранилище, куда вы можете отправить сделанные изменения, а затем вернуть их обратно.

Чтобы спрятать изменения, то есть сделать stash выполните:

git stash

Затем примите изменения из удалённого репозитория (git pull).

А затем верните свои изменения из stash:

git stash pop

Ну а если стек спрятанных изменений вам вовсе не нужен, то его удалить можно следующей командой:

git stash drop

3. Отменить локальные изменения

Чтобы сбросить изменения в локальном репозитории выполните команду:

git reset --hard

Или:

git checkout -t -f УДАЛЁННАЯ/ВЕТВЬ

4. Сбросить локальные изменения для определённого файла

Чтобы сделать это, используйте команду вида:

git checkout ИМЯ_ФАЙЛА

Заключение

Какой бы способ вы не выбрали, после любого из этих вариантов вы можете обновить свой локальный репозиторий до последней версии с помощью:

git pull

Рекомендуемые статьи:

1 Комментарий

  1. Анна

    Спасибо огромное! Очень помогло.

Оставить комментарий

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