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

Как создать новый репозиторий git из существующего

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

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

Удален ли git удалять решение? Я хочу, чтобы оба этих репозитория были на одном сервере.

Мысли?

4b9b3361

Ответ 1

Чтобы создать новый репозиторий Git из существующего репозитория, обычно нужно создать новый пустой репозиторий и перенести одну или несколько веток из существующего в новый репозиторий.

Следующие шаги иллюстрируют это:

  1. Создайте новый репозиторий. Она должна быть голой, чтобы вы могли ее подтолкнуть.

    $ mkdir /path/to/new_repo
    $ cd /path/to/new_repo
    $ git --bare init

    Примечание. Убедитесь, что ваш новый репозиторий доступен из существующего репозитория. Есть много способов сделать это; предположим, что вы сделали его доступным через ssh://my_host/new_repo.

  2. Нажмите ветку из вашего существующего хранилища. Например, допустим, мы хотим вытолкнуть ветку topic1 из существующего хранилища и назвать ее master в новом хранилище.

    $ cd /path/to/existing_repo
    $ git push ssh://my_host/new_repo +topic1:master

Этот метод позволяет сохранить историю из существующей ветки.

Примечание: новый репозиторий фактически является новым удаленным репозиторием. Если вы хотите работать с новым хранилищем, вы должны клонировать его. Следующее будет клонировать новый репозиторий в локальный рабочий каталог с именем new_repo:

$ git clone ssh://my_host/new_repo

В этом примере, когда вы клонируете новый репозиторий, вы увидите, что ветвь master является копией ветки topic1 старого репозитория.

Ответ 2

Потяните ветвь как обычно, а затем переместите ветку в новый репозиторий, созданный с помощью git init. Вы бы использовали код, который выглядит примерно так:

git push url:///new/repo.git TheBranchFolder

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

Ответ 3

Если вас не беспокоит потеря истории, сделайте git checkout mybranch, а затем скопируйте содержимое каталога в другую папку. В этой папке удалите папку .git, а затем:

git init; git commit -a -m "Imported from project Y"