Моя команда работает над веткой общих тем в git, которую я назову "topic1".Я работал над рефакторингом некоторого кода в ветке, созданной по теме1, которую я назову «рефакторинг».Я периодически сливал топик1 в рефакторинг, чтобы я мог быть в курсе изменений, но не реорганизовал рефакторинг обратно в топик1, потому что рефактор все еще находится в процессе.
Есть еще одна ветка темы, которую я будуназовите "topic2", которая была недавно создана от мастера.То, что я хотел бы сделать, это объединить только изменения, которые я сделал в "рефакторе", с новой веткой, созданной из topic2, которую я назову "topic2_refactor".(То есть изменения в коммитах, доступные только по рефакторингу, но не по теме1.)
Я знаю, как увидеть эти только эти изменения:
git log origin/refactor --not origin/topic1
Так что я хотел бы сделатьэто что-то вроде этого - но этот синтаксис не является правильным:
git checkout topic2
git checkout -b topic2_refactor
А затем это:
git merge origin/refactor --not origin/topic1
Или это:
git cherry-pick origin/refactor --not origin/topic1
(Выше, кажется,вызывать конфликты слияния, которые не являются необходимыми, из-за некоторых изменений, которые произошли на master, который позже был слит обратно в ветвь рефакторинга.)
Я надеялся, что есть чистый способ сделать это и избежатьненужные конфликты слияний, которые были разрешены позже в истории ветки «рефакторинг».Может ли это быть возможно с помощью git rebase, git filter-branch и т. Д.?