Git несколько подпроектов из подпапок? - PullRequest
12 голосов
/ 14 июля 2010

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

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

Walter

Ответы [ 2 ]

15 голосов
/ 15 июля 2010

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

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

5 голосов
/ 14 июля 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...