Лучший рабочий процесс с Git & Github

Я ищу некоторый совет относительно того, как правильно структурировать рабочий процесс для моей команды с Git & GitHub.

Мы - недавний svn, преобразовывает, и это довольно сбивает с толку, как мы должны лучше всего настроить наш ежедневный рабочий процесс.

Вот немного фона: я доволен командной строкой, и моя команда довольно плохо знакома с нею, но может следовать за командами использования. Все мы работаем над тем же проектом с 3 средами (разработка, подготовка и производство). Мы - соединение разработчиков и разработчиков так некоторое использование мерзавец GUI и некоторые CLI.

Наша установка в svn прошла примерно так:

  • У нас было ответвление для разработки, подготовки и производства.
  • Когда люди были уверены относительно кода, они будут фиксировать и затем объединять его в подготовку.
  • Сервер обновил бы себя, и в день выпуска (еженедельно) мы сделаем разность и продвинем изменения в рабочем сервере.

Теперь я настроил те ответвления и получил процесс с выполнением сервера, но это - фактический рабочий процесс, который путает ад из меня.

На излишество кажется, что каждый раз кто-то вносит изменение на файле, они создали бы новое ответвление, фиксацию, объединились бы и удалили бы то ответвление. Из того, что я читал, они смогли бы сделать это на определенной фиксации (использующий хеш), я имею то право? Действительно ли это - приемлемый способ пойти о вещах с Мерзавцем?

Любой совет значительно ценился бы.

17
задан Michael Currie 10 September 2015 в 21:24
поделиться

4 ответа

Вы можете скопировать ваш рабочий процесс из svn verbatim. Git может сделать все, что может svn (но он может сделать и больше!). Но, несмотря на использование CVS, ваш рабочий процесс может быть улучшен.

Если вы хотите, чтобы количество ветвей в описанном вами рабочем процессе было минимальным (что в случае, если вы новичок в git'е, на самом деле, всё упростит), я бы предложил иметь (а не одну ветвь разработки) по три ветви на одного разработчика: devel-john, devel-mary и т.д:

devel-john >--\
               \
devel-mary >------> staging ---> production
               /
devel-peter >-/

Это удобно: все изменения в разработке будут перенесены в центральный репозиторий (что часто хорошо даже для git'а) без конфликтов и слияны в любое время любым желающим/обязательным для выполнения слияния (например, в инсценировочную ветвь).

.
13
ответ дан 30 November 2019 в 13:27
поделиться

В зависимости от вашего рабочего процесса, вы можете иметь несколько "важных" веток в вашем центральном репозитории (т.е. на github), которые люди могут клонировать локально. Они будут соответствовать "стабильным", "бета", "разрабатываемым" и т.д. Хорошей статьей о возможном наборе ветвей является this.

Как только это будет сделано, вы сможете позволить людям использовать свою собственную стратегию. Я предпочитаю сохранять тематические ветки для крупных проектов и иметь одну, называемую 'quick-fixes', для быстрых вещей, которые мне нужны. Если у вас есть команда, работающая над крупным проектом, которую они хотят держать на отдельной ветке, отрезанной от основного репо, вы можете позволить им сделать это без какого-либо вмешательства. Если люди предпочитают иметь много крошечных веток, чтобы попробовать и т.д., они тоже могут это сделать.

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

.
1
ответ дан 30 November 2019 в 13:27
поделиться

Идеи, которые следует помнить при работе с DVCS:

  • distribution: даже если у вас есть один центральный GitHub, разработчик не ограничивается публикацией (push) только до that GitHub repo. Они могут вилку репо и опубликовать в своей собственной версии (в то же время извлекая из официального центрального репо GitHub -- называемого "вверх по течению").
    : даже если у вас один центральный GitHub, разработчик не ограничивается публикацией (push) только до , которая GitHub репо. Преимущество в том, что они могут переписывать историю (сбросить , rebase --onto, rebase -i, ...) столько раз, сколько захотят, в конце концов, они сделают запрос на подтягивание, позволяя интегратору управлять их изменениями.

  • одна из публикаций: в вашем собственном локальном репо вы можете настроить столько веток, сколько захотите (не по одной на каждую модификацию файла, конечно, а по одной на любую новую задачу или набор задач, которые вам нужно разработать)
    . Но вы также можете установить публичные ветки, которые будут толкнуты ("опубликованы") в ваше удаленное репо
    . См. этот вопрос по Git workflow, а также статьи JC Hamano по удалённым филиалам:
    . o Развлечения с удаленными ветками (1)
    o Развлечения с удаленными ветками (2)
    Фраза "Когда люди будут уверены в коде, они будут коммитировать, а затем объединять его в инсценировку" не должна применяться с DVCS: коммитируйте досрочно, коммитируйте часто, но нажимайте ("публиковать") только тогда, когда хотите.

3
ответ дан 30 November 2019 в 13:27
поделиться

Есть также некоторые рабочие процессы проекта, описанные в книге ProGit, которые показывают команды Git, которые разработчики будут использовать ежедневно.

Существует хорошо известная модель ветвления Git, описанная на http://nvie.com/git-model

3
ответ дан 30 November 2019 в 13:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: