Недавно я столкнулся с задачей переноса папки с проектом из одного репозитория в другой на github. Звучит примитивно, но если рассмотреть то, что дано и то, что необходимо получить, могут возникнуть некоторые нюансы.
Итак, что дано:
- Есть большой репозиторий, содержащий множество папок. Каждая папка – это отдельный проект.
Что необходимо сделать:
- Одну из папок перенести в отдельный репозиторий с сохранением ее истории коммитов.
В теории можно было бы просто скопировать весь репозиторий со всем содержимым в новое место, а потом просто удалить те папки, которые не нужны. Но такой способ довольно неоптимален и не особо мне понравился, так что я решил поступить иначе.
Я использовал стандартный гитовый filter-branch. За основу я взял следующие статьи:
- Moving Files from one Git Repository to Another, Preserving History
- Splitting a subfolder out into a new repository
В этом посте я хочу немного адаптировать процесс для лучшего восприятия.