Централизованный рабочий процесс

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

Это значит, что если два разработчика выполняют клонирование с хаба и оба делают изменения в проекте, то первый из них, кто отправит свои изменения обратно на хаб, сделает это без проблем. Второй разработчик должен взять наработки первого и выполнить слияние перед тем, как отправить свои изменения, так, чтобы не перезаписать изменения первого разработчика. Этот принцип справедлив для Git'а точно так же, как и для Subversion (или любой другой централизованной системы контроля версий), и в Git'е такая модель работает отлично.

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

Например, Андрей и Василий начинают работать одновременно. Василий выполняет свои изменения и отправляет их на сервер. Затем Андрей пытается отправить свои изменения, но сервер отвергает их. Андрею говорят, что он пытается отправить изменения, для которых невозможно выполнить перемотку вперёд. Поэтому, прежде чем их отправить, он должен получить изменения с сервера и слить их со своими изменениями. Такой рабочий процесс привлекателен для большого количества людей, так как это та модель, с которой многие знакомы и которая многим понятна.

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