Внесение своих изменений в общий проект

Главная трудность в описании этого процесса состоит в том, что существует большое количество способов организации этого процесса.

Так как Git очень гибок, разработчики могут осуществлять совместную работу по-разному, и сложно описать то, как именно вы должны это делать. Все проекты немного разные. Многое зависит от таких факторов как количество разработчиков, выбранный рабочий процесс, ваши права доступа к репозиториям, и, возможно, способ, которым внешние разработчики вносят свои изменения в проект.

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

Следующий фактор это рабочий процесс, используемый в проекте. Он централизован, и каждый разработчик имеет равные права на запись в основной репозиторий? Есть ли у проекта менеджер, который проверяет все патчи? Все ли патчи проверяются и одобряются? Вы вовлечены в этот процесс? Есть ли у менеджера помощники, и должны ли вы сначала отправлять свою работу им?

Следующий пункт это доступ к фиксации изменений. Рабочий процесс, требуемый для командной работы, может сильно отличаться в зависимости от того, имеете ли вы доступ на запись, или нет. Если у вас нет доступа на запись, то как в проекте принято принимать изменения разработчиков? Вообще, существует ли какая-либо политика? Какой объём работы вы вносите за раз? Как часто вы это делаете?

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