1) Предполагается, что существует центральный репозиторий (как в случае с SVN и CVS, но не обязательно Git, Bazaar, Mercurial и т. Д.), И человек A фиксирует (а затем нажимает коммит, который просто передает различия и отправлять сообщения в центральное хранилище), лицо B должно обновить свою копию вручную.
2) В этом случае, да, кто-то будет тратить свое время впустую. Системы SCM (Source Control Management) ничего не могут сделать, чтобы вылечить команду от организационных проблем. Это конечно крайний случай. В большинстве случаев будут существовать только незначительные различия (здесь определение незначительных заключается в том, что какой-либо конкретный файл не должен быть полностью или частично переписан) в каждом коммите, и если эти модификации не затрагивают раздел, над которым работает человек B, программное обеспечение SCM сможет объединить эти коммиты в один рабочий файл.
Другой случай, когда два человека изменяют одну и ту же область одного и того же файла (скажем, функцию). Когда возникает такой конфликт , программное обеспечение SCM поможет вам выбрать, какие изменения вы будете использовать, или даже позволит использовать оба варианта или ни того, ни другого.
3) Ветвь - это коммит строка истории :
feature-> /R-S-T
master-> A-B-C-D-E-F
bugfix-> \J-K-L-M
Здесь feature
, master
и bugfix
- ветви, а буквы - конкретные коммиты. Для ветви master
самая новая фиксация (самая последняя версия каждого файла) - F
. С другой стороны, новейшая фиксация ветки feature
- это T
и , она включает в себя только коммиты A
и B
из ветви master
. Любые изменения, сделанные в коммитах C
, D
, E
и F
, не включаются в эту конкретную ветку. Это может быть переписано как:
feature-> A-B-R-S-T
master-> A-B-C-D-E-F
bugfix-> A-B-C-J-K-L-M
Теперь ветви важны для разделения рабочего процесса на разные части и сосредоточения работы на определенных частях. Представьте, что в ветви master
находится стабильный код, и представьте, что мы реализуем новую функцию в ветви feature
, которая еще не готова к выпуску. Теперь представьте, что система плагинов изменилась, и важные исправления зафиксированы в ветке master
, и, поскольку реализуемая мной функция опирается на систему плагинов, мне нужно передать эти коммиты (с C
до F
). ) к филиалу feature
. Для этого вы вводите команду rebase
(я здесь использую Git в качестве руководства) для программного обеспечения SCM, так что:
feature-> /R-S-T
master-> A-B-C-D-E-F
bugfix-> \J-K-L-M
Итак, вы закончили всю работу над веткой feature
. Чтобы перевести коммиты R
, S
и T
в master
, вы вводите команду merge
:
master-> A-B-C-D-E-F-R-S-T
bugfix-> \J-K-L-M
Это ветка основы . Есть много других интересных вещей, которые вы можете сделать с ветками. Надеюсь, что это не слишком долго и помогает: P