2016-02-17 4 views
0

В настоящее время я работаю над командой разработчиков, которая разделена так, что отдельные лица или небольшие группы работают над полностью независимыми функциями, используя git как контроль версий. У нас есть центральный филиал (trunk), который иногда обновляется для рефакторинга или объединенных функций.Разработка центральной ветви Git

Либо из-за отсутствия надлежащего жаргона или понимания я не смог найти способ выполнения следующего: мы хотели бы, чтобы центральная магистраль «автоматически» отфильтровывала свои обновления в ветвях разработки, без необходимости перерезать после каждого обновления. Если филиал функции объединяется в центральный, он должен стать частью всех других текущих ветвей развития.

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

ответ

1

Причина, по которой он не делает это автоматически, заключается в том, что эти изменения не гарантируются совместимостью. Если вы хотите внести изменения от мастера в художественных отрасли вы можете использовать

git merge master 

Единственной часть, которая может считаться «плохой практикой» является то, что в разработке программного обеспечения, вы должны держать каждую функцию малые и самодостаточными. Может быть, лучший способ состоит в том, чтобы разделить каждую функцию на несколько более мелких функций?

+0

Я попробовал запустить это с помощью моей собственной ветки функций, и он говорит только «Уже обновлено». Однако ни одно из изменений не отражается, и в журналах ничего не говорится об изменениях в master. – frog

+0

У вас есть локальная копия master/trunk? – Massey101

+0

@frog, Если ваша основная ветвь называется 'trunk', попробуйте' git fetch', за которой следует 'git merge origin/trunk'. –

1

Вы определенно то недоразумение, или, по крайней мере, вам не хватает критической кусок при работе с Git, с большим количеством других: a workflow.

По умолчанию Git не делает никакого автоматического слияния любого рода без руководства человека, чтобы убедиться, что Гит сделал правильные вещи. Чтобы объединиться, вы должны вручную запускать команды, а хорошая гигиена кода требует, чтобы вы выполнили свои интеграционные/модульные тесты против этого слияния, чтобы гарантировать, что ничто не удалось сломать.

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

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

Я дам вам несколько советов, когда дело доходит до обеспечения того, чтобы каждая ветвь в курсе мастера:

  • Разработчик работает на этой ветке несет ответственность за обеспечение того, чтобы их код в актуальном состоянии.
  • Восстановление вашего кода против мастера предпочтительнее, чем объединение мастера в вашу ветку темы, поскольку вы избегаете много бессмысленных и бессмысленных слияний.
  • Не позволяйте инструменту делать все, что угодно; вы должны время от времени вмешиваться на человеческом уровне.
+0

Большое спасибо за ответ, Макото! Возможно, я ввел в заблуждение, когда я сказал «автоматически» - я имел в виду, что только запуск «git pull» заметил бы, если бы у багажника были какие-то новые обновления. Что касается атласской ссылки, то это фантастический ресурс, но длина статей может быть пугающей, когда вся терминология звучит одинаково для непосвященных. – frog

Смежные вопросы