Я использую метод push-to-deploy для внесения изменений в проект. Как я это сделал, выглядит следующим образом:
- Настройте локальный репозиторий git для текущего проекта и зафиксируйте файлы
- Скопируйте полный каталог проекта в удаленное место (например, /var/www/myproject), включая каталог myproject/.git
- Установите
git config receive.denyCurrentBranch false
для этого проекта на удаленном сервере (если я установлю значение true, я получу ошибки), чтобы разрешить мне отправлять данные из dev. В противном случае я получаю сообщение об ошибке, говорящее мне сделать это. - Настройте перехватчик после обновления на удаленном сервере в основном на
git reset HEAD
иgit checkout
. Это перезапишет предыдущую версию в удаленном каталоге новой версией. - Добавьте новый удаленный каталог git в локальный.
- Добавляйте, фиксируйте и отправляйте изменения в удаленное репо. Файлы удаленного проекта должны быть текущей версии.
Это работает нормально, и мои изменения в файлах отображаются в проверенной ветке на удаленном сервере. Таким образом, у меня есть только один удаленный репозиторий. Раньше у меня был голый репозиторий, и я использовал там хук после обновления, чтобы перетащить проект в живой каталог (в результате на удаленном репозитории было два репозитория — голый и извлеченный).
В любом случае, это не работает, когда я создаю НОВЫЙ файл в своей локальной среде разработки и добавляю, фиксирую и отправляю изменения. Я не получаю никаких ошибок. Кроме того, если я попытаюсь нажать еще раз, он скажет мне, что все обновлено. Но новый файл находится не на удаленном сервере. Почему?
Я не уверен, что новые файлы не фиксируются в локальном git, не передаются на удаленный компьютер или не проверяются. Есть ли для этого причина? Нужно ли где-то указывать какую-то опцию?
ОБНОВИТЬ
Если я попытаюсь проверить файл в разработке в моем локальном репозитории, все в порядке. Таким образом, кажется, что файл был передан туда. Итак, в какой-то момент между нажатием на удаленный и затем сбросом/проверкой там я не настроил все правильно.