Локальная разработка и рабочий сервер

Рейтинг: 1Ответов: 1Опубликовано: 19.03.2015

Осваиваю локальную разработку при помощи гита. Есть рабочий комп, сервер, на котором живая версия сайта и репозиторий. В репозитории настроен хук post-update, чтобы при push на локальном компе изменения сливались на рабочий сайт.

Гит я только начал осваивать, а потому не всё понятно. На локали для примера создал несколько файлов, что-то переименовал, теперь пытаюсь слить изменения обратно, делаю:

d:\www\example.ru>git push origin master 
remote: 
remote: **** live [Hub's post-update hook] ***
remote: 
remote: From /opt/git/example.ru
remote:  * branch            master     -> FETCH_HEAD
remote: error: Your local changes to the following files would be overwritten by merge:
remote:     new test.php
remote: Please, commit your changes or stash them before you can merge.
remote: Aborting
remote: Updating 12b9e07..257f2ae

А он мне вот такое в ответ. Перевод-то я понимаю: "ваши локальные изменения будут перезаписаны след. файлом". Собственно этот файл был изменён перед пушем, почему возникает ошибка, не совсем понятно. Поясните, други, чёго от меня хотят?

Добавлю, что файл "new test.php" есть на локали, и, похоже, в репозитории. В папке сайта его нет, как нет и некоторых других, что есть на локали — т.е. слив в папку рабочего сайта ещё ни разу не сработал, выходит, затык пока на этапе слива в репозиторий.

Ответы

▲ 2

ответ из комментариев.


на сервере находится третья версия файла с изменениями, которые будут потеряны вследствие мерджа, поэтому гит отказался выполнять операцию. мораль - не редактируйте файлы на сервере.

А как проигнорировать и перезаписать изменения?

$ git pull -s  -X theirs

в общем, пулл с strategy option theirs

Или как принято решать подобные ситуации?

Ситуаций с изменением кода на сервере быть не должно.

Одна на локали, вторая в репе, в папке сайта его нет.

Насколько понял, "сайт" пишет, что у него как раз-таки есть файл, который он не может смерджить