При разработке веб-приложений сталкиваюсь иногда со сложностью синхронизации данных на локальном компьютере и тестовом сервере (не все можно протестить на локалке). Конечно можно решить эту проблему применив старый добрый rsync, но сегодня я расскажу как можно для эти целей использовать git. Плюсы такого решения очевидны - синхронизируются только изменения, всегда есть возможность откатиться на несколько коммитов назад, можно даже применить такой способ на продакшне запилив отдельую ветку production и мерджить туда только проверенные изменения тестовой ветки.
У меня же это пока практически пустой и непосещаемый сервер проекты на котором находятся в зачаточном состоянии. Поэтому можно нарушить правила и делать коммиты прямо на продакшн =)
Описывать установку git на локальном компьютере и сервере принципиально не буду.
Создается пустой bare git-репозиторий на сервере
git --bare init
2) Создается репозиторий в папке с проектом на локальном компьютере и добавляются все файлы проекта
git init
git add .
git commit -q -m "first"
3) На сервере в .git/hooks создается хук post-receive с содержимым типа:
#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f
и даются права на запись chmod +x post-receive
. Вместо /var/www/www.example.org ваш путь к директории сервера.
4) Затем репозиторий назначается как web
git remote add web ssh://server.example.org/путь_к_удаленному_репозиторию/website.git
git push web +master:refs/heads/master
5) Все! Теперь после проведения локальных коммитов опубликовать их на сервере можно одной командой
git push web
Если есть трудности с настройкой - пишите в комментариях, постараюсь помочь!
- Вперед
- Назад