2016-10-21 5 views
1

у меня есть GIT respository, который выглядит немного как это:Git: деформируя материал разделен между ветками

C0 ---- C1 ---- ... ---- C12 ---- C14 (dev) 
          \ 
          \---- C13 (abandoned) 

«DEV» является основной отраслью развития, и «заброшенный» эксперимент, который мы хотим пересмотреть в какой-то момент в будущем. Я хотел раздавить C1 ... C12 вниз в одну фиксацию, чтобы получить что-то вроде этого:

C0 ---- C1' ---- C14' (dev) 
     \ 
      \---- C13' (abandoned) 

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

C0 ---- C1' ---- C14' (dev) 

затем проверить C1' и вишня-выбор C13 как C13'. Но есть ли более простой способ сделать это, что также увеличится, чтобы обрабатывать более сложные диаграммы с большим количеством филиалов и расходящихся коммитов (но какая-то общая история будет раздавлена) без большой ручной работы?

ответ

2

Вы на правильном пути. Сначала проигнорируйте C13 и просто сквош до C0 - C1' - C14' с интерактивной перестановкой. Но тогда не вишневый выбор, но перебазируйте C13 на C1'. git должен обнаружить, что это в основном нет-op, и вы это сделаете. Итак:

git rebase --onto C1_new C12 C13 
+0

Это прекрасно работало в более сложных случаях. Спасибо. – Mohan