Вы здесь

Обновление www-файлов на сервере с использованием git

  • Для начала нам понадобится GIT.

    Если вы работаете в ОС Linux, то можете собрать его из исходников или установить его средствами самой системы, например в RedHat, yum install git-all.
    Если вы работаете в Windows, то необходимо скачать MSysGit. Тут вы можете скачать и файлы для самостоятельной сборки дистрибутива msysgit-(net|full)install.
    Для пользователей MacOS есть своя разработка OSX Installer for Git.
    В состав сборок Eclipse или входят модули для работы с Git или их можно установить из основного репозитария платформы (EGit и JGit).

  • В установке, я думаю, проблем не возникнет.
  • После установки вам необходимо произвести начальные настройки git.
    git config --global user.name "Your Name"
    git config --global user.email "your_email@whatever.com"

    Определитесь, как вы хотите учитывать перевод строк в файлах.
    Для mac/unix:

    git config --global core.autocrlf input
    git config --global core.safecrlf true

    Для win

    git config --global core.autocrlf true
    git config --global core.safecrlf true
  • Создаем пару ключей.
    ssh-keygen -t rsa
    У вас в личном каталоге ~/.ssh появятся 2 файла id_rsa и id_rsa.pub
    Первый файл - приватный ключ (никому его не давайте и не показывайте).
    Второй файл - публичный ключ, его можно показывать другим и размещать на серверах, например github.com, gitorious.com. Он нам понадобится в дальнейшем при настройке удаленного сервера.
  • Также необходимо установить git на сервере.
  • Создаем общего пользователя для работы — git
  • В его домашней директории создайте папку ~git/.ssh, файл ~git/.ssh/authorized_keys
  • В содержимое файла внесите содержимое публичного(id_rsa.pub) ключа каждого из разработчиков. Каждый ключ с новой строки.
  • Выставить права на папку ~git/.ssh - 700, на файл ~git/.ssh/authorized_keys - 600.
  • Создаем репозитарий в профиле пользователя git. Например,
    mkdir -pv ~git/repo/<reponame>.git && cd ~git/repo/<reponame>.git && git init --bare
  • Создаем папку для web-сервера, например
    mkdir -pv /var/www/example.com/www
  • Настраиваем хук в созданном репозитарий:
    vi ~git/repo/<reponame>.git/hooks/post-receive

    Вставляем код

    #!/bin/sh
    GIT_WORK_TREE=/var/www/example.com/www git checkout -f
  • Теперь каждый сотрудник может сделать локальную рабочую копию данных
    git clone ssh://git@example.com/~/repo/<reponame>.git
  • После своих изменений сделать commit, затем
    git fetch origin
    git rebase origin/master

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

    git push origin master

Вы также можете прочитать Git quick tips.