Как я могу использовать репозитории Git для веб-разработки (и развертывания)?

#git #workflow

#git #рабочий процесс

Вопрос:

Исходя из простого рабочего процесса «редактировать непосредственно на ftp», я хочу попробовать управление версиями исходного кода. Насколько я могу себе представить, GIT — очень популярный выбор.

Я разработчик-одиночка. У меня есть несколько веб-сайтов, над которыми я работаю (каждый в / home / domains /) на удаленном сервере (Linux), и я хочу начать работать с ними локально (Mac OS), а затем вернуть их обратно (обновив удаленные файлы).

Однако я не понял, как git должен работать у меня. Похоже, у меня должен быть «пустой» репозиторий, которого у меня быть не может, потому что в моих проектах уже есть файлы и папки, так что это означает, что мне пришлось бы создать новый пустой репозиторий, а затем загружать материалы локально, а затем извлекать удаленно.

Это кажется немного странным, имея 3 репозитория (1 локальный и 2 удаленных), когда я буду работать только с 2 папками.

Могу ли я получить несколько советов?

Ответ №1:

Есть два стандартных, приемлемых варианта, если у вас есть онлайн-доступ между вашим сервером и вашей локальной системой.

Во-первых, вы можете добавить удаленный доступ к другому репозиторию и извлечь все зафиксированные изменения из другого репозитория, прежде чем начать вносить изменения. Это означает, например, что если вы вносите изменения в локальной системе, вам придется подключиться по ssh к серверу и нажать, чтобы получить изменения там.

Во-вторых, вы можете создать простой репозиторий, который будет действовать как мастер. Это стандартная модель для общих репозиториев, особенно когда задействовано несколько пользователей, но она работает, когда задействован один пользователь, и предпочтительна, когда между двумя системами может не быть постоянного двунаправленного доступа. Этот простой репозиторий может находиться в системе Mac, на сервере Linux или в третьей системе (такой как github, например). Рабочий процесс в этом случае будет заключаться в извлечении всех изменений из исходного репозитория, внесении изменений, фиксации, а затем отправке этих изменений в исходный репозиторий. При отсутствии специальных перехватов вам все равно потребуется подключиться по ssh к серверу и выполнить запрос для обновления текущего веб-сайта.

Вы могли бы создать новый репозиторий, выполнив git clone --mirror --bare из репозитория сервера. После этого вы бы git add remote origin URL-TO-NEW-BARE-REPOSITORY на сервере. Вы могли бы либо сделать то же самое в системе macosx, либо git clone URL-TO-NEW-BARE-REPOSITORY

Технически возможно настроить систему так, чтобы она позволяла системе macosx отправлять запросы в извлеченный рабочий каталог Linux. Я не рекомендую это, особенно если вы, возможно, также вносите изменения в этот репозиторий, поскольку процесс может уничтожить любое незафиксированное изменение. Аналогичная проблема может возникнуть с автоматическими перехватами, которые автоматически отправляют / проверяют входящие коммиты в каталог текущего веб-сервера.

Для справочных целей рассмотрим http://toroid.org/ams/git-website-howto и http://joemaller.com/990/a-web-focused-git-workflow /

Ответ №2:

Мой рабочий процесс выглядит следующим образом:

  • У меня есть удаленное репозиторий и локальный (это обычные репозитории, а не голые)
  • Я работаю над своим локальным репозиторием
  • Я фиксирую
  • Я отправляю свои изменения в удаленное хранилище
  • Я подключаюсь по ssh к удаленному компьютеру и запускаю git reset --hard удаленный репозиторий для обновления файлов

Для меня это работает довольно хорошо, особенно потому, что я использую Fabric для выполнения шагов push и reset, так что все сводится к одному fab push .

Чтобы уточнить, что я разработчик-одиночка, может не сработать так хорошо, если вы разрабатываете свою веб-страницу в более крупной команде.

Комментарии:

1. Я собираюсь подробнее рассмотреть этот метод. Действительно, я забыл упомянуть, что я единственный разработчик