... | @@ -10,7 +10,7 @@ Git решает эту задачу, используя **подмодули**. |
... | @@ -10,7 +10,7 @@ Git решает эту задачу, используя **подмодули**. |
|
|
|
|
|
## Начало использования подмодулей
|
|
## Начало использования подмодулей
|
|
|
|
|
|
Предположим, вы хотите добавить новую кастомизацию cust-ibank-fl-newbank в суперпроект ibank_root. Первое, что требуется сделать, это клонировать внешний репозиторий cust-ibank-fl-newbank в подкаталог супер-репозитория ibank_root. Добавление внешних проектов в качестве подмодулей делается командой `git submodule add`:
|
|
Предположим, вы хотите добавить новую кастомизацию cust-ibank-fl-newbank в суперпроект ibank_root. Первое, что требуется сделать, это клонировать внешний репозиторий cust-ibank-fl-newbank в подкаталог суперрепозитория ibank_root. Добавление внешних проектов в качестве подмодулей делается командой `git submodule add`:
|
|
```
|
|
```
|
|
>git submodule add git@source.isimplelab.com:ibank/cust-ibank-fl-newbank.git cust-ibank-fl-newbank
|
|
>git submodule add git@source.isimplelab.com:ibank/cust-ibank-fl-newbank.git cust-ibank-fl-newbank
|
|
Initialized empty Git repository in ibank_root/cust-ibank-fl-newbank/.git/
|
|
Initialized empty Git repository in ibank_root/cust-ibank-fl-newbank/.git/
|
... | @@ -84,3 +84,16 @@ Submodule path 'cust-ibank-fl-newbank': checked out '08d709f78b8c5b0fbeb7821e37f |
... | @@ -84,3 +84,16 @@ Submodule path 'cust-ibank-fl-newbank': checked out '08d709f78b8c5b0fbeb7821e37f |
|
```
|
|
```
|
|
Либо создавайте ветвь, когда работаете в каталоге подмодуля с использованием команды `git checkout -b <имя ветки>`.
|
|
Либо создавайте ветвь, когда работаете в каталоге подмодуля с использованием команды `git checkout -b <имя ветки>`.
|
|
Когда вы сделаете обновление подмодуля командой submodule update в следующий раз, она откатит вашу работу, но у вас будет указатель для возврата назад.
|
|
Когда вы сделаете обновление подмодуля командой submodule update в следующий раз, она откатит вашу работу, но у вас будет указатель для возврата назад.
|
|
|
|
|
|
|
|
Распространённая проблема возникает, когда разработчик делает изменения в своей локальной копии подмодуля, но не отправляет их на общий сервер. Затем он создаёт коммит содержащий указатель на это непубличное состояние и отправляет его в суперрепозиторий.
|
|
|
|
Когда другие разработчики пытаются выполнить git submodule update, система работы с подмодулями не может найти указанный коммит, потому что он существует тольков системе первого разработчика.
|
|
|
|
Если такое случится, вы увидите ошибку вроде этой:
|
|
|
|
```
|
|
|
|
>git submodule update
|
|
|
|
fatal: reference isn’t a tree: 6c5e70b984a60b3cecd395edd5b48a7575bf58e0
|
|
|
|
Unable to checkout '6c5e70b984a60b3cecd395edd5ba7575bf58e0' in submodule path 'cust-ibank-newbank'
|
|
|
|
```
|
|
|
|
Существует два возможных способа устранения данной проблемы.
|
|
|
|
|
|
|
|
1. Сообщение разработчику, который добавил ссылку на подмодуль в суперпроект, но не запушил коммит или подмодуль в публичный репозиторий, о необходимости опубликовать свои наработки.
|
|
|
|
2. Удаление ссылки на подмодуль из суперрепозитория. Этот метод более радикальный и его стоит применять только если невозможно связаться с первым разработчиком, а рабочее окружение нужно уже сейчас. |
|
|
|
\ No newline at end of file |