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


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

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

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

мысли?

3 55

3 ответа:

чтобы создать новый репозиторий 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

этот метод позволяет сохранить историю из существующего филиала.

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

$ git clone ssh://my_host/new_repo

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

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

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

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

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

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