Задать вопрос

Как выделить имеющуюся часть репозитория GIT в подмодуль?

Как к имеющемуся репозиторию подключить внешний репо в качестве подмодуля более или менее понятно:
$ git submodule add git@github.com:schacon/rack.git rack

Но как быть, если в процессе жизнедеятельности проекта вдруг было принято решение часть функционала выделить в подмодуль?

Например весь проект находится под системой контроля версий, включая раздел /sport/soccer/
Как уже этот имеющийся раздел сделать репозиторием (подмодулем)?
git submodule add git@github.com:schacon/rack.git sport/soccer не сработает (выдаст ошибку, мотивируя тем, что этот раздел и так в системе контроля версий).

Не хочется удалять раздел, коммитить без него и подключать внешний репо с целью восстановления раздела.
  • Вопрос задан
  • 2922 просмотра
Подписаться 6 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • ProductStar
    Python + Flask + Git: веб-разработка с нуля
    2 месяца
    Далее
  • Учебный центр IBS
    DEV-007 Введение в систему контроля версий Git
    1 неделя
    Далее
  • Stepik
    Git (система контроля версий)
    1 неделя
    Далее
Решения вопроса 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Не хочется удалять раздел, коммитить без него и подключать внешний репо с целью восстановления раздела.

И тем не менее это единственный способ
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@ilyarsoftware
Как написал @DmitriyEntelis "удалять раздел, коммитить без него и подключать внешний репо с целью восстановления раздела." это единственный способ, но если хотим сохранить историю выделяемой части проекта можно поступить следующим образом:

git clone <git repository A url>
cd <git repository A directory>
git remote rm origin
git filter-branch --subdirectory-filter <directory 1> -- --all
mkdir <directory 1>
mv * <directory 1>
git add .
git commit


Источник: Moving Files from one Git Repository to Another, P...
Ответ написан
Комментировать
@vl12
Ещё вариант:
Выделить директорию в ветку через `git subtree split`, загрузить в неё историю, отключить слежение из старого репозитория. Подробнее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
Made In Dream Санкт-Петербург
от 100 000 до 220 000 ₽
ИТРУМ Ростов-на-Дону
от 75 000 ₽