Ответ 1
Вам нужно написать крюк post-receive, который запускает git checkout -f
после того, как удаленный репозиторий git получит push. Подробнее см. с помощью git для управления веб-сайтом.
Ситуация:
Что я хочу делать?
Если я настроил репозиторий git локально, используя git init, а затем нажмите на папку на сервере, это не сработает. Когда я FTP на сервер, чтобы проверить файлы, они на самом деле там. Когда я SSH на сервер и выполняю git статус, он не очищается, хотя это должно быть, так как я просто нажал на сервер.
Шаги, которые я делаю:
Вам нужно написать крюк post-receive, который запускает git checkout -f
после того, как удаленный репозиторий git получит push. Подробнее см. с помощью git для управления веб-сайтом.
Когда вы нажимаете на репозиторий git, он не обновляет рабочие файлы репозитория. Обычно, когда вы нажимаете, вы должны нажимать на голый репозиторий - кажется, что они намеревались использовать git для работы.
Для одного из моих (локальных) проектов я написал script, чтобы автоматически проверять последний подкаталог "ui", когда я нажимаю свою работу на репозиторий развертывания. Он встроен в предыдущий ответ здесь: Разработка проектов Django с использованием Git
Вы также можете просто использовать крюк post-update на сервере, чтобы сделать "git reset --hard master", если кто-то подталкивает обновление к мастеру и использует не-голый репо, а не отдельный область для извлеченных файлов.
Я использую крюк после обновления, как описано в этой записи в FAQ: http://git.or.cz/gitwiki/GitFaq#non-bare
Он обновит ваше рабочее дерево, если вы настроили дистанционное репо как "голый".
Git Версия 1.9.1
Сервер Ubuntu 14.04 LTS
Сервер LAMP
Я установил свой LAMP-сервер для обновления моего рабочего каталога моего репозитория Git, когда один из моих веб-разработчиков нажимает на сервер изменения. Я заметил, что журнал будет замечать новые коммиты, но не будет обновлять рабочий каталог. Вместо этого вручную (git check -f) для каждого обновления, это может быть установлено автоматически, чтобы сделать это после получения нажатия.
Создайте файл с именем post-receive "в папке с крючками" с этим контентом:
#!/bin/sh
# Обновление рабочего каталога после получения push от удаленных клиентов.
# Это должно быть направлено на рабочий каталог Git.
GIT_WORK_TREE =/var/www/dev_site Git checkout -f
Включить разрешения для выполнения файла, введя " chmod + x post-receive" в папку "hooks".
Теперь он обновит рабочий каталог, когда коммиты будут перенесены в репозиторий Git. Мой сайт теперь показывает изменения, когда я посещаю его в браузере.
В этом примере мой рабочий каталог "/var/www/dev_site". Измените это в соответствии с тем, где находится ваш репо.
Обратите внимание, что это репо не является голой репо. Голый Repo не имеет рабочего каталога, с которого веб-сервер может читать.