Поскольку git
является распределенной VCS, все это клонирование не требуется после того, как все получили копию.
Например:
Origin:
master
|
A---B---C
Персона A разветвляется и создает feature
ветвь:
Person A:
origin/master
|
A---B---C---D---E
|
feature
, и пусть Персона A отправит ее в Origin:
Origin:
master
|
A---B---C---D---E
|
feature
feature
будет на удаленном сервере, ноизменения не в origin/master
, так как вы определили, что только человеку B разрешено вносить изменения в master
.Существование feature
на удаленном сервере не влияет на origin/master
на всех.
1022 * На данный момент, человек B, который действительно имеет право включить
feature
в
master
, может Fetchчтобы получить обновленную «копию всего», после чего он может выполнить слияние, создав коммит слияния F из
master
и
feature
:
Person B:
origin/master
|
A---B---C-------F
\ /
D---E
|
feature
Обратите внимание, что изменения все еще не включеныorigin/master
.Пока все изменения происходят только в ветке master
локального репо Лица B:
Person B:
origin/master master
| |
A---B---C-------F
\ /
D---E
|
feature
Изменения все еще не включены origin/master
.(Я разбиваю это шаг за шагом).Только после того, как Лицо B отправит master
в Происхождение, оно будет обновлено в Происхождении, что разрешено делать только Лицу В:
Origin:
master
|
A---B---C-------F
\ /
D---E
|
feature
На протяжении всего этого процесса отслеживается авторство и приверженность.Любой, кто выбирает хранилище в этот момент, увидит, что feature
, написанный Лицом А, был объединен и включен в master
Лицом В