2012-04-02 3 views
8

Я хотел бы создать новую ветку в моем репо, которая включает только файлы из определенного каталога в 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 беспорядок.

+3

... но вы на самом деле * необходимо * использовать 'git filter-branch' для извлечения истории для подкаталога. Без этого вы просто получите файлы. –

+1

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

ответ

13

Почему вы не хотите использовать git filter-branch? Он создан специально для таких задач, как тот, который вы хотите.

git branch subdir_branch HEAD 
git filter-branch --subdirectory-filter dir/to/filter -- subdir_branch 
git push git://.../new_repo.git subdir_branch:master 

Это даст вам только содержимое вашей dir/to/filter в новом хранилище, включая все его истории, и больше ничего. Поскольку вы только фильтруете только что созданную ветку, остальная часть вашего репозитория остается нетронутой. Затем вы можете удалить subdir_branch.

 Смежные вопросы

  • Нет связанных вопросов^_^