Как я могу сделать git rebase, что бы что-то эквивалентное "take commit FROM commit c1 to branch tip of branch X, and transplant them onto other branch A2"
?Git rebase «сегмент отрасли» (нужно что-то вроде параметра -from?)
Визуально мне нужно сделать перебазироваться, что бы получить меня из этого дерева:
----------------...---*----------*----*---...---X
| \---...---A1 master c1 c2
\----...--A2
... к этому:
----------------...---*master
| \---...---A1
\----...--A2---*----*---...---X'
c1' c2'
Я первый подумал --fork-point
парам было то, что я но результат попытки использовать его для меня был «чистым WTF», думаю, что он делает что-то совершенно другое, поэтому я вернулся к заявлению перед этой неудачной попыткой (что я сделал: git checkout X; git rebase A2 --fork-point master
... возможно, используя хэш х2 вместо мастер был бы прав, но результат вещи выше, было настолько непостижимо для меня, что я полностью отказался от этой дорожки ...)
(P.S. Я не хочу, чтобы мне говорили «почему это плохая идея». Я знаю, что мне нужно, у меня есть четкое представление о том, как коммиты должны перемещаться, и у меня также есть хорошее понимание всех изменений, которые произошли между файлами, поэтому я не ожидаю конфликта, и в случае, если один случается, я уверен, что смогу его решить правильно.)
'--fork-point' сложного маленький Beastie, который использует reflog вверх по течению ветви, чтобы попытаться пропустить фиксации, которые раньше были в восходящем потоке, но были отброшены. Это определенно не то, что вы хотите - то, что вы хотите, - это то, что '--onto' разделяет ответственность' '' 'аргумента' git rebase' в два раза, так что он просто ограничивает, какие коммиты должны быть скопированы, а не установка цели. См. Ответ Гаутама. – torek