2016-08-02 3 views
1

Я следующую структуру:мерзавец перебазироваться уже перебазировались филиал

F2:      [F21] - [F22] - [F23] 
         /
F:  [F1] - [F2] - [F3] - [F4] - [F5] 
     /
M: [M1] 

И я кабачки (перебазироваться) коммиты в F отрасли, что приводит к следующему:

F2: [F1] - [F2] - [F3] - [F21] - [F22] - [F23] 
    /
M: [M1] 
     \ 
F:  [F'] 

И слиты освоить:

F2: [F1] - [F2] - [F3] - [F21] - [F22] - [F23] 
    /
M: [M1] - [M2] 
     \ /
     [F'] 

Теперь я хочу, чтобы в основном перебазироваться F2 к F, но это требует от меня разрешения конфликтов вдоль пути, главным образом F1, F2, F3 с F'. Мой желаемый результат:

F2: [F`] - [F21] - [F22] - [F23] 
    /
M: [M1] - [M2] 
     \ /
     [F'] 

Можно ли как-то намекнуть, перебазирования, что изменяет его видит являются частью фиксаций у меня есть, так что мне не нужно, чтобы их решить?

+0

Это то, что вы получаете, когда совершаете сквош. Честно говоря, не делайте этого. Вы будете рады, что не сделали этого, когда вам нужно исправить следующую регрессию и сможете эффективно использовать git bisect. – cmaster

+0

Поскольку это не ответ на ваш вопрос, я оставлю его в качестве комментария: Я считаю, что ваше последнее изображение хочет отобразить стрелку от M1 до временной шкалы F2, не так ли? И извините, а потом вам кажется, что вы хотите выжать «F1 ... F3» в историю «F2». Боюсь, вам не повезло - вы больше ничего не можете «намекать», потому что вы раздавили эти «F» коммиты, и я не вижу смысла использовать их для «F1 ... F3». Sqashing - одна из немногих вещей, которая действительно теряет вам информацию, поэтому ... из-за удачи. Он используется для очистки непроверенных ветвей функций непосредственно перед нажатием, но это не то, что у вас есть здесь. – AnoE

ответ

1

Самый простой способ - сообщить rebase, чтобы пропустить эти коммиты с флагом --interactive. На F2, сделайте следующее:

git rebase --interactive [F'] 

Вы увидите, что мерзавец готовится сделать:

pick c411f13 F1 // <- delete this line or use drop instead of pick 
pick 8f9b902 F2 // <- delete this line or use drop instead of pick 
pick 7693586 F3 // <- delete this line or use drop instead of pick 
pick 1fd0615 F21 
pick 26fd795 F22 
pick 2fb0408 F23 

Смотрите комментарии ниже этих линий для получения дополнительной информации, # d, drop = remove commit и # If you remove a line here THAT COMMIT WILL BE LOST интересны здесь.

Сохранить и выйти, git сделает то, что вы просили: пропустите первые коммиты и примените остальные.

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