#git #git_push
имеется: сервер с git-ом и доступом по протоколу ssh на сервере в каталоге /путь/к/ создано обыкновенное (не-bare) git-хранилище командой git init у пользователя, от имени которого подключаюсь, есть права на запись в этот каталог требуется: чтобы при отправке изменений командой git push в любую ветку из локального клона этого хранилища обновлённые файлы тут же появлялись на сервере в рабочем каталоге /путь/к/ именно в том виде, как они представленны в этой самой ветке да, я знаю про подводные камни. меры приняты. как настроить хранилище на сервере, чтобы оно работало именно так, как мне требуется?
Ответы
Ответ 1
на сервере: в каталоге /путь/к/ выполните команду: $ git config receive.denyCurrentBranch ignore в хранилище (/путь/к/.git/) создайте файл /путь/к/.git/hooks/post-update следующего содержания: #!/bin/sh GIT_WORK_TREE=$(dirname $PWD) git reset --hard $(git rev-parse $1) добавьте этому файлу биты исполнимости: $ chmod +x /путь/к/.git/hooks/post-update всё. теперь можете клонировать это хранилище себе локально: $ git clone пользователь@сервер:/путь/к/ добавлять файлы, ветки, коммитить и отправлять изменения на сервер командой git push (понятно, что если ветки на сервере ещё не существует, надо будет её указать, например, так: git push origin ветка). если вдруг понадобится переключиться на другой коммит/ветку без создания нового коммита, то придётся «вручную» на сервере выполнить (в каталоге /путь/к/) git checkout -f ... или git reset --hard ... навеяно этими вопросами (и ответами к ним) с одной целью — упростить процесс: Настройка и развертывание проекта c помощью Git Deploy a project using Git push
Комментариев нет:
Отправить комментарий