Я ищу некоторый совет относительно того, как правильно структурировать рабочий процесс для моей команды с Git & GitHub.
Мы - недавний svn, преобразовывает, и это довольно сбивает с толку, как мы должны лучше всего настроить наш ежедневный рабочий процесс.
Вот немного фона: я доволен командной строкой, и моя команда довольно плохо знакома с нею, но может следовать за командами использования. Все мы работаем над тем же проектом с 3 средами (разработка, подготовка и производство). Мы - соединение разработчиков и разработчиков так некоторое использование мерзавец GUI и некоторые CLI.
Наша установка в svn прошла примерно так:
Теперь я настроил те ответвления и получил процесс с выполнением сервера, но это - фактический рабочий процесс, который путает ад из меня.
На излишество кажется, что каждый раз кто-то вносит изменение на файле, они создали бы новое ответвление, фиксацию, объединились бы и удалили бы то ответвление. Из того, что я читал, они смогли бы сделать это на определенной фиксации (использующий хеш), я имею то право? Действительно ли это - приемлемый способ пойти о вещах с Мерзавцем?
Любой совет значительно ценился бы.
Вы можете скопировать ваш рабочий процесс из svn verbatim. Git может сделать все, что может svn (но он может сделать и больше!). Но, несмотря на использование CVS, ваш рабочий процесс может быть улучшен.
Если вы хотите, чтобы количество ветвей в описанном вами рабочем процессе было минимальным (что в случае, если вы новичок в git'е, на самом деле, всё упростит), я бы предложил иметь (а не одну ветвь разработки) по три ветви на одного разработчика: devel-john, devel-mary и т.д:
devel-john >--\
\
devel-mary >------> staging ---> production
/
devel-peter >-/
Это удобно: все изменения в разработке будут перенесены в центральный репозиторий (что часто хорошо даже для git'а) без конфликтов и слияны в любое время любым желающим/обязательным для выполнения слияния (например, в инсценировочную ветвь).
.В зависимости от вашего рабочего процесса, вы можете иметь несколько "важных" веток в вашем центральном репозитории (т.е. на github), которые люди могут клонировать локально. Они будут соответствовать "стабильным", "бета", "разрабатываемым" и т.д. Хорошей статьей о возможном наборе ветвей является this.
Как только это будет сделано, вы сможете позволить людям использовать свою собственную стратегию. Я предпочитаю сохранять тематические ветки для крупных проектов и иметь одну, называемую 'quick-fixes', для быстрых вещей, которые мне нужны. Если у вас есть команда, работающая над крупным проектом, которую они хотят держать на отдельной ветке, отрезанной от основного репо, вы можете позволить им сделать это без какого-либо вмешательства. Если люди предпочитают иметь много крошечных веток, чтобы попробовать и т.д., они тоже могут это сделать.
Что касается автоматического тестирования и интеграции в производство из инсценировки, то вы можете либо настроить git-хуки для этого, либо иметь запущенную систему, которая будет делать это за вас через регулярные промежутки времени и сообщать о проблемах.
.Идеи, которые следует помнить при работе с DVCS:
distribution: даже если у вас есть один центральный GitHub, разработчик не ограничивается публикацией (push) только до that GitHub repo. Они могут вилку репо и опубликовать в своей собственной версии (в то же время извлекая из официального центрального репо GitHub -- называемого "вверх по течению").
: даже если у вас один центральный GitHub, разработчик не ограничивается публикацией (push) только до , которая GitHub репо.
Преимущество в том, что они могут переписывать историю (сбросить
, rebase --onto
, rebase -i
, ...) столько раз, сколько захотят, в конце концов, они сделают запрос на подтягивание, позволяя интегратору управлять их изменениями.
одна из публикаций: в вашем собственном локальном репо вы можете настроить столько веток, сколько захотите (не по одной на каждую модификацию файла, конечно, а по одной на любую новую задачу или набор задач, которые вам нужно разработать)
.
Но вы также можете установить публичные ветки, которые будут толкнуты ("опубликованы") в ваше удаленное репо
.
См. этот вопрос по Git workflow, а также статьи JC Hamano по удалённым филиалам:
.
o Развлечения с удаленными ветками (1)
o Развлечения с удаленными ветками (2)
Фраза "Когда люди будут уверены в коде, они будут коммитировать, а затем объединять его в инсценировку" не должна применяться с DVCS: коммитируйте досрочно, коммитируйте часто, но нажимайте ("публиковать") только тогда, когда хотите.
Есть также некоторые рабочие процессы проекта, описанные в книге ProGit, которые показывают команды Git, которые разработчики будут использовать ежедневно.
Существует хорошо известная модель ветвления Git, описанная на http://nvie.com/git-model