Базовая перебазировка (ваш второй случай)
Я начну с вашего второго случая, так как это легче объяснить.
git checkout A
git rebase B
спрашивает Gitвзять любые коммиты в A, которых нет в B, и переместить их в конец B.
Пример сценария:
-- 0 (master)
\
1 -- 2 -- 3 (B)
\
4 -- 5 (A)
Если, пока A извлечен, я делаю git rebase B
, я собираю коммиты 4 и 5 (они на A, но не на B) и перемещаю их в конец B:
-- 0 (master)
\
1 -- 2 -- 3 (B)
\
4' -- 5' (A)
Так что теперь A будет иметь все коммиты B, сопровождаемыекоммиты A.
В вашем случае коммиты the_original
теперь должны быть после коммитов v2
, а the_original
- ветвь v2
, хотя я не уверенэто то, что вы говорите, произошло.
Использование --onto
Когда вы используете --onto
, все становится странным.Я начну с checkout
снова, потому что ветвь, которая в настоящий момент извлечена, все еще перемещается:
git checkout A
git rebase --onto C B
просит Git взять коммиты, которые находятся на A, но не на B, и переместитьсяих, так же как и без --onto
.Но теперь мы дали ребазу пункт назначения: поместили их в конец C.
Давайте добавим C в мой начальный сценарий:
6 (C)
/
-- 0 (master)
\
1 -- 2 -- 3 (B)
\
4 -- 5 (A)
Так как я нахожусь на A, мыВы все еще собираетесь двигаться 4 и 5: они на A, но не на B;но мы разместим их на C, т. е. после 6:
6 (C)
/ \
/ 4' -- 5' (A)
/
-- 0 (master)
\
1 -- 2 -- 3 (B)
Так что в вашем случае, что должно было произойти, зависит от того, что было проверено перед ребазой: коммиты в проверенной веткеиз того, что не было в v2
, должно было быть перенесено в конец the_original
.
Я нахожу, что редко хочу --onto
, и, честно говоря, я нахожу это достаточно запутанным, чтобы я, вероятно, выбрал вишню коммитоввокруг вместо использования git rebase --onto
...
Педантические заметки
В соответствии с соглашением на https://git -scm.com / docs / git-rebase, я использую 'для обозначения перемещенных коммитов, так как 4' и 5 'являются новыми коммитами, воспроизводящими сами 4 и 5, а не 4 и 5.
Я использую лингвистический ярлык, когда яскажем «перемещено»: коммиты технически не перемещаются, они применяются повторно, создавая новые коммиты, которые более или менее похожи на оригиналы.