Перемещение ветки Git с историей в новый репо - PullRequest
0 голосов
/ 30 августа 2018

У меня есть репозиторий Git с несколькими проектами в разных ветках

  • мастер *
  • интерфейс
  • бэкэнд
  • апи

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

1 Ответ

0 голосов
/ 30 августа 2018

Если каждая ветвь содержит только соответствующий код, то это довольно просто. На самом деле даже проще создать новый репо с git clone --single-branch --branch <original-repo-url>, но если вы уже init отредактировали и просто хотите внести изменения в историю, вы можете сделать что-то вроде

git fetch <original-repo-url> +frontend:master

Вы получите странное поведение, если не создали первую ветку в новом репо - так что в этом случае вы сначала просто создадите фиктивный коммит, а затем отсоединитесь от ветви, чтобы обновление прошло.

git commit --allow-empty -m temp 
git checkout --detach
git fetch <original-repo-url> +frontend:master
git checkout master

С другой стороны, если каждая из ваших веток содержит весь код, и вы хотите переписать историю для каждого «нового» репо, чтобы включить только соответствующий код, то вы, вероятно, захотите использовать git filter-branch. У него много параметров, поэтому без более подробной информации я не могу точно сказать, какие параметры вы бы использовали, но фильтр подкаталогов может представлять интерес.

Документы на https://git -scm.com / docs / git-filter-branch

...