Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
H How-To
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Jira
    • Jira
  • Merge requests 0
    • Merge requests 0
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • docs
  • How-To
  • Wiki
  • submodule basic

submodule basic · Changes

Page history
update authored Mar 12, 2015 by Administrator's avatar Administrator
Hide whitespace changes
Inline Side-by-side
Showing with 14 additions and 1 deletion
+14 -1
  • submodule-basic.markdown submodule-basic.markdown +14 -1
  • No files found.
submodule-basic.markdown
View page @ 3c425433
......@@ -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
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
```
Либо создавайте ветвь, когда работаете в каталоге подмодуля с использованием команды `git checkout -b <имя ветки>`.
Когда вы сделаете обновление подмодуля командой 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
Clone repository
  • Work in branches
  • clone ibank
  • create new module
  • create ssh key
  • git essentials
  • initial config
  • remove module
  • submodule basic