Подтвердить что ты не робот

Git несколько подпроектов из подпапок?

У меня есть несколько проектов, которые я хотел бы поставить на GitHub.com. Все эти проекты находятся в моем локальном репозитории Git. У меня есть только один репозиторий, но для каждого проекта я хотел бы иметь 1 проект GitHub. Таким образом, проект может быть организован.

Как я могу настроить это, чтобы управлять этим не так сложно? Нужно ли обновлять макет репозитория и создавать новые хранилища Git локально для каждого проекта? Это было бы действительно занято, и я мог бы потерять историю Git.

Вальтер

4b9b3361

Ответ 1

В зависимости от того, как организовано ваше репо, вы можете использовать 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/ в старом репо.

Повторите этот шаг для каждого проекта, и теперь у вас будет три независимых репозитория со всей историей для соответствующих проектов.

Ответ 2

Если я понимаю вопрос, у вас есть одно большое репо, которое содержит ряд проектов. Вы хотели бы разбить каждый из этих проектов на отдельные репозитории без потери истории. В нижней строке да, вам нужно переделать макет репозитория и создать новые хранилища git для каждого проекта. Однако вам не нужно терять историю.

  • Сделайте копию своего текущего репо, по одному экземпляру для каждого субпроекта.
  • В каждом новом репозитории удалите все другие проекты, кроме тех, которые связаны с этим репо.

У вас все еще будет вся история до разрыва исходного репо, но теперь каждый проект - это собственный репозиторий.

Если вы не возражаете потерять свою историю, делая каждый проект в своем собственном git, репо так же просто, как запуск git init в каталоге проекта. Это создаст новое репо только для этого проекта.