Отсоединить подкаталог в отдельный git-репозиторий со всеми включенными ветками - PullRequest
0 голосов
/ 25 сентября 2018

Во-первых, я нашел решение для этого, используя git subtree split

Однако решение, приведенное выше, перемещает только 1 ветку за раз (обычно это основная ветвь).Теперь я хочу переместить все ветви (около 100 веток) из этого подкаталога, есть ли способ сделать это с помощью команды git?

1 Ответ

0 голосов
/ 25 сентября 2018

Если я правильно понимаю, что вы хотите достичь, я думаю, вам следует попробовать --subdirectory-filter команды filter-branch:

    git filter-branch -f --subdirectory-filter "src/" --prune-empty -- --all

Заменить src/ именем вашего подкаталога.Опция --all выполнит действие для всех ветвей.

Надеюсь, это поможет.

EDIT: Команда изменит только корневой каталог ваших локальных ветвей.Если вы хотите изменить корневой каталог для всех удаленных веток, я предлагаю вам использовать этот трюк :

  • , сначала вы клонируете удаленный репозиторий с опцией --mirror, которая приводитв голый локальный репозиторий со всеми ветвями
  • и затем вы делаете этот локальный репозиторий обычным.

Затем в этом недавно клонированном репозитории, который содержит все ветви, вы можете применить команду filter-branch.

С опцией --subdirectory-filter эта команда установит указанный подкаталог в качестве корня локального репозитория git.

Опция --prune-emptyотменить все пустые коммиты (поскольку они относятся исключительно к файлам вне подкаталога).

Важно понимать, что вся история git будет переписана так, как если бы подкаталог всегда был корнем git-репо.

Надеюсь, я помогу вам понять эту команду.

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