Керування кількома людьми, які працюють над проектом за допомогою GIT


32

Я дуже новачок у GIT / GitHub (як новий, що починається вчора). Я хотів би знати, який найкращий спосіб керувати кількома людьми, які працюють над одним проектом з Github. В даний час я керую одним проектом з чотирма розробниками.

  1. Як я можу розглянути робочий процес і переконатися, що все синхронізовано?

    (Примітка. Усі розробники матимуть один універсальний обліковий запис.)

  2. Чи повинен кожен розробник бути в іншій галузі?

  3. Чи зможу я працювати з двома людьми, які працюють над тим самим файлом?

Будь ласка, опублікуйте детальну відповідь, я не сором’язливий читач. Мені потрібно це добре зрозуміти.


7
Один рахунок для всіх розробників? Це може спрацювати, але це, швидше за все, не є хорошою ідеєю.
marstato


Можливо, варто вивчити розвиток GitFlow та магістральну мережу . Особисто я мав великий успіх з останнім
Дж. Льюїс

Відповіді:


29

Якщо всі розробники мають доступ до репо, вам не потрібно робити нічого особливого. Вони витягнуть зміни з репо, внесуть власні зміни, вступлять на місцевому рівні, а потім підштовхнуть до публічного репо, коли у них щось працює.

Якщо з іншого боку, у вас є один (або декілька) розробників, відповідальних за здійснення репортажу, а інші надають виправлення до них. Попросіть кожного з них клонувати репо в свої власні акаунти і дозволити їм надсилати запити, коли вони хочуть змінити їх у головне репо.

Можна також зробити спеціальні клони для роботи над певними особливостями, якщо бажаєте. Використання того ж робочого процесу з тягнутими запитами, щоб отримати зміни в основне репо, коли функція виконана.

Якщо під "Усі розробники матимуть один універсальний обліковий запис", ви маєте на увазі, що всі розробники поділять один обліковий запис GitHub і з'являться репортажем як один і той же комітет, це погана ідея. Створіть окремі облікові записи та створіть їх як співпрацівників, якщо ви хочете, щоб вони мали доступ до всіх.

Що стосується конкретних питань:

  1. Ні, використовуйте гілки для функцій, виправлень і т. Д., Які займуть більше одного комітету. У одній гілці може працювати більше одного розробника.

  2. Так, git вирішує конфлікти дуже добре, тому немає проблем із тим, щоб люди працювали над одним файлом. Немає жодних проблем, окрім вирішення конфлікту не завжди може бути тривіальним, якщо існують фундаментальні зміни у файлі, який редагував більше одного члена. Однак це нічого, що неможливо подолати, поговоривши разом. Контроль версій не замінює зв’язок.

Удачі!


Кілька пунктів, які ви зробили, є справжніми відкривачами для очей, змусивши мене все разом подумати в іншому напрямку, дякую!
badZoke

Поспіш, якщо це може тобі допомогти. До Git та DVCS потрібно трохи звикати, але вони надзвичайно гнучкі, коли ви звикаєте до них.
Харальд

Дякую за це У мене було одне конкретне питання. Якщо в одній гілці працюють кілька розробників. Кожен раз, коли хтось із розробників вносить зміни та натискає на працюючу гілку, чи потрібно решта розробників витягувати зміни (щоб переконатися, що у них є останній код на локальному рівні)?
Eswar Rajesh Pinapala

Ні, не кожен раз, саме тоді, коли потрібно синхронізувати. Розгляньте свою локальну копію гілки як свою приватну гілку, а верхню гілку як ту, до якої потрібно об'єднатись. Використовуючи щось на кшталт git fetch upstreamцього, git merge upstream/branchви повинні синхронізуватися, не переписуючи свою локальну історію комісій. Якщо це не проблема, просто git pull --rebaseперенесіть ваші локальні незапущені зміни на верхню частину верхнього відділення.
Харальд

@badZoke .... що ти зробив для вирішення свого третього запитання (обробляй 2 людини, які працюють над тим самим файлом) ...
Moumit

25

Ми працюємо з двома розробниками і використовуємо цей робочий процес:

  • На Github у нас є головна гілка та відділення для розробників
  • Основна гілка є такою ж, як виробництво або містить готовий код до розгортання
  • Гілка розробників випереджає головного і містить увесь новий код, над яким зараз працюють
  • Місцево ми обидва працюємо на гілці розробників і підштовхуємо до github, коли щось готове
  • Інший розробник отримує будь-які нові зміни з гілки розробників, перш ніж натискати свій новий код
  • Коли галузь Dev хороша, ми зливаємося з основною гілкою
  • Місцево ми маємо декілька функціональних відділень, які випускають відділення тощо

1
Приємно і просто, спасибі велике! Почну з цього, перш ніж перейти до складних речей;)
badZoke

Що робити, якщо інший розробник отримує нові зміни, перш ніж натискати на свій код, нові зміни змінюють код, який він уже змінив?
wayofthefuture

+1, це дійсно найпростіше для початку і працює чудово. Те, що ви використовуєте, називається спрощеним gitflow: marcgg.com/assets/blog/git-flow-before.jpg
Jelle

5

Тут я бачу лише текстові відповіді, тому я подумав, що я опублікую картину приємного gitflow для початку. Малюнок описує більше тисячі слів:

Спрощений Gitflow

  • Цей потік також добре працює при безперервному розгортанні.
  • Ваша головна гілка містить код, який зараз працює на вашому виробничому сервері.
  • Відділення розробки містить код, який наразі працює на сервері постановки / тестування.

+1, git flow або щось подібне - це, мабуть, правильна відповідь на це питання.
Можливо_Фактор

0

Я працюю з 3 іншими розробниками, і ми з цим досить боремося. Інколи розробники підштовхуватимуть до виробництва, які дійсно ще не готові до пройденного часу, оскільки вони втягнуть інші зміни в свої зміни, а потім запустить у виробництво. Гілки версій, здається, працюють для нас нормально. Отже, якщо версія 1.0 є поточною стабільною версією, ми створимо гілку для v1.1-development. Розробники внесуть зміни в цю галузь. Наш сервер тестування перевіряє цю гілку і за необхідності витягує зміни. Коли всі функції для v1.1 будуть готові до запуску і тестування буде виконано, ми з’єднаємо v1.1 з master і push. З філіями команда розробників A може працювати на v1.1, а команда розробників B може працювати v1.2. Обидві команди можуть працювати, не впливаючи одна на одну. Якщо команда A розробляє щось, що може використовувати B,

Ми також використовуємо гілку виправлень, яка використовується для негайних змін.

Ось посилання на картинку, як це виглядає. http://nvie.com/img/git-model@2x.png


Це не звучить для мене так, як ти насправді реалізуєш потік git так, як було задумано, - це розділити кожну незалежну функцію або виправити на її власну гілку, а не лише кожен реліз
Бред Томас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.