2015-01-14 4 views
2

У меня есть два репозитория A и B, которые содержат разные проекты. В какой-то момент я создал ветку «развился» в репо B и там делал какую-то работу.Переместить ветку в другой репозиторий, сохраняя при этом свои коммиты, но агрегируя оставшуюся историю.

Repo A master a-a-a-a 

Repo B master b-b-b-b 
         \ 
     develop   d-d-d-d-d 

То, что я хочу сделать сейчас, чтобы переместить ветвь разработки от репо В к А, в то время как все его фиксаций должны быть сохранены, но остальная часть истории репо B должны получить вместе взятые. Поэтому в конце это должно выглядеть так:

Repo A master a-a-a-a 
         \ 
     develop   d-d-d-d-d 

Repo B master b-b-b-b 
        \ 
     develop   d-d-d-d-d 

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

- [Repo B] git remote add /url/to/RepoA 
- [Repo B] git push RepoA develop 

Однако это также включает в себя всю историю Repo В (б-б-б-б), а также, что я не хочу (или на самом деле объединены в один фиксации).

Любые предложения о том, как это сделать?

Благодаря

ответ

2

После вы сделали:

[Repo B] git push RepoA develop 

Я полагаю, вы получите что-то вроде:

Repo A master a-a-a-a 

repoB/master  b-b-b-b 
         \ 
     develop   d-d-d-d-d 

т.е. двух ветвей repoA/master и repoB/master находятся в вашем репо, но не подключены.

Почему бы вам не сделать rebase?
Используйте опцию -i, так что вы можете решить, пережать b-b-b-b совершает в один фиксации (я думаю, что это то, что вы хотите) Команда будет

git rebase -i master develop 

Затем вы выбираете первый совершить b и сквош следующие.
Результат должен быть затем:

Repo A master a-a-a-a 
         \ 
     develop  b'-d'-d'-d'-d'-d' 

Где b' это обязательство от деформируя части 4 совершают b и d' являются фиксаций, вытекающие из совершения d.

+0

Thx, интерактивная перестановка сделала трюк! – user1033552

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