15. Git: система управления версиями для всех. Меньше теории, больше практики. Работа в локальной сети

Представьте себе ситуацию, когда несколько людей работают над одним файлом в одно и то же время. Но что случится если вы в данный момент изменяете содержимое какого-нибудь файла и другой человек вносит его собственные изменения и передает их в ваш репозиторий!Содержимое вашего файла изменится или файл может перестать существовать в результате действий с другого конца.

Есть два способа решения этой проблемы:
  • Gitolite server;
  • общая папка с bare-репозиториями.

Удалённый репозиторий — это обычно голый (чистый, bare) репозиторий — Git-репозиторий, не имеющий рабочего каталога. Поскольку этот репозиторий используется только для обмена, нет причин создавать рабочую копию на диске, и он содержит только данные Git'а. Проще говоря, голый репозиторий содержит только каталог .git вашего проекта и ничего больше.

Рабочий каталог - это каталог в котором размещены наши исходные файлы. Например файл content.docx в Workbench.

Bare-репозиторий действует как посредник между всеми клонами и вашим исходным репозиторием, который содержит рабочий каталог. Нельзя просто так передавать (push) от клона к источнику клона, если источник содержит рабочий каталог.


CLI:
git clone --bare C:\Users\raviepic3\Desktop\Workbench C:\generic_share\
Bare_Workbench

Данная команда создает bare clone репозитория Workbench в общей папке generic_share.

GUI:

1) Скопировать .git каталог из существующего репозитория и вставить его с другим именем different_name.git вне репозитория.
Например копируем C:\Users\raviepic3\Desktop\Workbench\.git в C:\generic_share\Bare_Workbench.git

2) Открыть config файл внутри Bare_Workbench.git и установить в нем bare = true