Вопрос:

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

svn git command-line workflow github

2938 просмотра

5 ответа

2114 Репутация автора

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

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

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

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

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

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

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

Любой совет будет принята с благодарностью.

Автор: Tom Schlick Источник Размещён: 28.12.2009 05:09

Ответы (5)


1 плюс

57872 Репутация автора

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

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

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

Автор: Noufal Ibrahim Размещён: 28.12.2009 05:30

13 плюса

19143 Репутация автора

Решение

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

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

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

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

Автор: Antony Hatchkins Размещён: 28.12.2009 05:47

3 плюса

880189 Репутация автора

При работе с DVCS следует учитывать следующие идеи:

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

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

Автор: VonC Размещён: 28.12.2009 08:32

3 плюса

1580 Репутация автора

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

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

Автор: Alec the Geek Размещён: 18.03.2010 11:06

3 плюса

6269 Репутация автора

Отличный пост о GitHub Workflow от одного из создателей GitHub Скотта Чакона и автора упомянутой книги Pro Git : P

Автор: lukmdo Размещён: 30.09.2011 09:46
Вопросы из категории :
32x32