2016-08-18 2 views
1

У меня есть проект, над которым я работал в Visual Studio в течение некоторого времени, и сохраняю свои изменения в репозитории Git. Давайте назовем этот проект, который имеет следующую историю совершитьОтделив два репозитория Git, которые были объединены вместе

A0-A1-A2-A3-A4-A5-A6 

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

B0-B1-B2-B3 

В какой-то момент я решил, что эти два проекта действительно напрямую связаны друг с другом, и я сливаю Проект B в проект репозиторий и добавить его к решению Visual Studio Project A. Репозиторий Project A теперь имеет две корневые фиксации A0 и B0.

A0-A1-A2-A3-A4-A5-A6-M1 
        /
     B0-B1-B2-B3- 

После этого момента я предполагаю, что эти проекты являются одними и не требуют разделения моей работы на самостоятельные ветви Project A и Project B. Большинство фиксаций связаны либо Project A или B. Проект Хотя, есть некоторые коммиты, где я сделал изменен на А и В.

A0-A1-A2-A3-A4-A5-A6-M1-AB1-A7-B4-B5-AB2-B6-A8-A9 
        /
     B0-B1-B2-B3- 

Но теперь я решил, что я был неправ, чтобы объединить эти проекты и хотел бы разделить историю двух проектов на отдельные соответствующие репозитории git.

A0-A1-A2-A3-A4-A5-A6-A7-A8-A9 

B0-B1-B2-B3-B4-B5-B6 

Оба этих проекта являются полностью частными проектами, над которыми я работаю. Таким образом, перезагрузка/воссоздание всех коммитов не является проблемой. Я читал много сообщений о SO и в других местах в Интернете, но до сих пор не могу понять, что лучше всего было подойти к разделению этого.

ответ

0

Это работа для git rebase:

git clone current_repos new_repos_only_a ; cd new_repos_only_a 
git rebase -i A6 
# skip all B commits, pick all A commits, do not pick the merge commit (should be skipped by git automatically) 

(То же самое для B конечно, в отдельном новом хранилище).