У меня есть несколько проектов, которые я хотел бы поднять на GitHub.com. Все эти проекты находятся в моем локальном репозитории Мерзавца. У меня есть всего один репозиторий, но для каждого проекта, я хотел бы иметь 1 проект GitHub. Тем путем ошибки могут быть организованы проектом.
Как я могу настроить это так, чтобы не было настолько трудно справиться? Я должен восстановить свое расположение репозитория и создать новые репозитории мерзавца локально для каждого проекта? Это было бы действительно включенным временем, и я мог бы терять историю Мерзавца.
Walter
В зависимости от того, как организовано ваше репо, вы можете использовать git filter-branch
для создания нового репо для каждого проекта, сохраняя историю только для каждого отдельного проекта .
Предполагая, что ваша текущая структура репо выглядит следующим образом:
repo/
project1/
project1-file
project2/
project2-file
project3/
project3-file
Вы можете сначала клонировать свое репо ( git filter-branch
удалит файлы и ] их историю, поэтому сначала клонируйте исходное репо ).Затем в своем клонированном репо вы можете использовать git filter-branch
для создания нового репо (со всей старой историей) в корне project1
:
$ git filter-branch --subdirectory-filter project1 HEAD
Теперь ваш Репо будет выглядеть следующим образом:
repo/
project1-file
И он по-прежнему будет содержать историю для всех файлов, которые хранились в project1 /
в старом репо.
Повторите этот шаг для каждого проекта, и теперь у вас будет три независимых репозитория со всей историей соответствующих проектов.
Если я понимаю вопрос, у вас есть одно большое репо, содержащее несколько проектов. Вы хотели бы разбить каждый из этих проектов на отдельные репозитории, не теряя истории. Итог - да, вам нужно переделать макет репозитория и создать новые репозитории git для каждого проекта. Однако вам не нужно терять историю.
У вас по-прежнему будет вся история до разрушения исходного репозитория, но теперь каждый проект является собственным репозиторием.
Если вы не против потерять свою историю, превратить каждый проект в его собственное репозиторий git так же просто, как запустить git init
в каталоге проекта. Это создаст новое репо только для этого проекта.