Глупый вопрос и рассматривает меня как полностью новичок к управлению версиями.
Я плохо знаком с Мерзавцем (я использовал подрывную деятельность прежде, но просто основы) я понимаю основы Мерзавца и ее переходящих команд, у меня есть мнимая ситуация, которым нужен Ваш совет.
Предположим, что мое программное обеспечение в настоящее время в v1.2, стабильном и выпущенном.
My Software v1.0 v1.1 v1.1.1 v1.2 <- Current, Compilable and Released
У меня есть два разработчика, John и Eric.
Это - январь прямо сейчас.
John работает над большим количеством исправлений ошибок на основе выпуска v1.2. Каждый день он обязан передавать свой код назад репозиторию (GitHub), программное обеспечение не могло бы скомпилировать в зависимости от его состояния.
Eric экспериментирует, этой новой функции Wiki от основных характеристик нравится, добавляет WYSIWYG-редактор к расширенным функциям как управление diffing/version, снова, он обязан передавать свой код назад репозиторию, программное обеспечение не могло бы скомпилировать ни одного в зависимости от того, где он в.
С МЕРЗАВЦЕМ, каков рабочий процесс?
Если я понимаю МЕРЗАВЦА правильно, и Eric и John должны создать их собственное ответвление и в феврале, сделать, чтобы они объединились что работы с ведущим устройством?
Спасибо
Я бы установил две ветки интеграции в основном репозитории:
Пожалуйста, обратите внимание, что эти ветки должны использоваться только для целей интеграции, т.е. для слияния законченной работы с другими, так называемыми, ветвями возможностей. Разработка и исправление ошибок должны выполняться в ветках feature. В этом рабочем процессе код в ветках интеграции всегда работает.
Оба разработчика должны иметь по одной ветке функции для каждой задачи, которую они пытаются выполнить. В вашем случае у Эрика должна быть ветка wysiwyg, которая начинается с кончика основной ветки. Когда функция будет готова к входу в основную ветку разработки, Эрик может просто слить ветку wysiwyg в мастер.
То же самое относится и к Джону. Если, например, Джону придётся исправлять два выпуска (например, выпуск 1 и выпуск 2), то у него должны быть ветки fix-issue1 и fix-issue2. Эти ответвления должны начинаться с кончика 1,2-ой ветви. После исправления одной из проблем, скажем issue1, Джон может объединить ответвление fix-issue1 обратно в 1.2-стабильное. Если коды в ведущей и 1.2-стабильной ветках не сильно расходятся, то Эрику, вероятно, было бы неплохо иногда производить слияние ветки 1.2-стабильной с ведущей, чтобы включить накопленные исправления в следующий релиз продукта.
Когда придёт время выпуска 1.3, Эрик должен убедиться, что все накопленные исправления в 1.2-стабильной ветке и готовые ветки функций были слиты в ведущей. Тогда он может просто пометить v1.3 и создать новую ветку 1.3-stable.
.GIT очень гибкий, и вы можете приспособить его использование к вашему конкретному сценарию. Тем не менее, мне нравится подход branch-per-feature, и я также предпочитаю "перебазинг" слиянию.
Branch-per-feature означает, что вы создаёте ветку для каждой функции или дефекта, над которым вы работаете. Обычно ответвление живёт только до тех пор, пока разрабатывается и удаляется после слияния/переслияния с ведущим.
Переследование означает, что вместо того, чтобы произвести слияние ответвления с ведущим, вы на самом деле вытаскиваете изменения из ведущего вниз и помещаете их перед всеми изменениями, которые вы сделали в своём ответвлении. В сущности, это слияние приводит к слиянию "ГОЛОВА" с началом изменений в вашем ответвлении. В результате создаётся впечатление, что все изменения, которые вы сливаете, начались после последней ревизии HEAD.
Хорошей практикой также является перемещение ваших ответвлений в удалённое хранилище, в случае, если кому-то другому понадобится посмотреть или поработать с ответвлением, он также предоставляет резервную копию вашей работы. Опять же, когда вы закончили с ответвлением, я предлагаю почистить после и удалить старое ветки.
Наконец, последняя лучшая практика заключается в том, чтобы ваши коммиты были небольшими, специфичными для одной конкретной задачи или действия, чтобы каждый коммит мог быть легко изучен другими и быстро понятен тому, что было сделано. Коммиты затем могут служить для документирования вашего прогресса и действий
.Джон должен работать над master, Эрик должен работать над веткой с именем WYSIWYG или какой-нибудь веткой с соответствующим именем.
Если вы хотите проверить, какой может быть версия 1.3, вы должны подтолкнуть master-ветку Джона к новой ветке с именем stable, если у вас её ещё нет, если у вас уже есть стабильная ветка, просто снова слить master в stable, это будет делаться каждый раз, когда вы захотите выпустить исправления ошибок.
Если Эрик закончил с ответвлением wysiwyg, слить его и тогда у вас есть компилируемый релиз. Затем вы архивируете/уничтожаете/игнорируете ответвление wysiwyg, так как оно больше не нужно.
.Противоположные рекомендации для того, кто поддерживает мастер-ветку от Вопросительного Марка и Кайтани-Question Mark, рекомендуя Джону работу над мастером, в то время как Кайтани, рекомендуя Эрику работу над мастером-демонстрациями, обеспечивает гибкость рабочего процесса Git'а.
Что касается Криса Никола, рекомендующего ребейзинг вместо слияния, то я бы проявил ту же осторожность, что и в Pro Git Скотта Чакона , который доступен для бесплатного онлайн-чтения , и я настоятельно рекомендую: "Не делайте ребейзинг коммитов, которые вы перенесли в публичный репозиторий". Так как "каждый день [Джон] должен коммитировать свой код обратно в репозиторий (GitHub)", я бы, вероятно, держался подальше от ребейзинга, за исключением тех случаев, когда он используется локально Джоном и Эриком.
Я бы порекомендовал вам прочитать раздел "Рабочие процессы разветвления" в Pro Git, в котором описаны давно работающие ветки и тематические ветки. Вероятно, вам также стоит взглянуть на раздел "Распределенные рабочие процессы", в котором описывается централизованный рабочий процесс, рабочий процесс интегратора-менеджера, а также рабочий процесс диктатора и лейтенанта.
.Если я правильно понимаю GIT, то и Эрик, и Джон должны создать свою собственную ветку, и в феврале, пусть они сливают то, что работает с мастером?
да
.