Я хотел бы создать новую ветку в моем репо, которая включает только файлы из определенного каталога в master и его историю, затем нажмите эта ветвь в новый репозиторий.Git создать новую ветвь с только указанным каталогом и ее историей, а затем нажать на новый репозиторий
... или что-то подобное - например, может быть возможно перенаправить каталог в новый репозиторий на новое репо без создания ветки.
До сих пор я думаю, что следующее будет работать, но мне интересно, есть ли более упорядоченный способ.
1 - Создайте пустую ветку:
git symbolic-ref HEAD refs/heads/<new-branch>
rm .git/index
git clean -fdx
2 - заказ каталога от мастера:
git checkout master <paths> ...
git add <paths> ...
git commit
3 - Толчок ветвь на новый удаленный:
git push -u <remote-URL> <new-branch>
4 - Затем в новом репо слияние с ведущим:
git checkout -t origin/<new-branch>
git checkout master
git merge <new-branch>
git branch -d afterimage
git branch -d -r afterimage
Я пытаюсь сделать что-то эквивалентное Detach subdirectory into separate Git repository, но без git filter-branch
беспорядок.
... но вы на самом деле * необходимо * использовать 'git filter-branch' для извлечения истории для подкаталога. Без этого вы просто получите файлы. –
Я действительно не вижу интереса к тому, чтобы не следить за публикацией ссылки. Выполнение этого, как вы предлагаете, работает, но является грубой силой, и оно не очистят данные истории или хранилища. – CharlesB