Разделить две или более веток git на отдельные подкаталоги одного репозитория? - PullRequest
3 голосов
/ 01 июля 2010

Этот вопрос чем-то похож на Как объединить две ветви из двух разных репозиториев в одном репозитории? .

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

/appFoo
  -MasterBranch
  -OtherVersionBranch

И заканчивая репо с одной веткой (master) и двумя подкаталогами:

/appFoo
    /MasterSubdirectory
    /OtherVersionSubdirectory

И, конечно, я 'Мне бы хотелось сохранить историю без изменений, поэтому, если я просматриваю журнал файла в OtherVersionSubdirectory , я вижу все коммиты, которые были сделаны в этой ветке.

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

Спасибо всем!

1 Ответ

3 голосов
/ 02 июля 2010

Переключитесь на ветку MasterBranch и выбросьте содержимое ветки в каталог MasterSubdirectory, сделайте коммит:

git checkout MasterBranch
mkdir MasterSubdirectory
git mv -k * MasterSubdirectory
git commit -a

Это оставит вашу ветку только с одним директором.в OtherVersionBranch:

git checkout OtherVersionBranch
mkdir OtherVersionSubdirectory
git mv -k * OtherVersionSubdirectory
git commit -a

Объединить одну ветку в другую

git checkout MasterBranch
git merge OtherVersionBranch
git branch -d OtherVersionBranch

Теперь у вас есть одна ветка MasterBranch.Вы можете объединить его с master или делать с ним все, что вы хотите.

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

И попробуйте сделать это на копии.Это сработало для меня, но мой случай был очень прост.

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