#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. Я собираюсь подробнее рассмотреть этот метод. Действительно, я забыл упомянуть, что я единственный разработчик