Разверните функциональную ветвь на другую ветвь функции
У меня есть две (частные) ветки, над которыми я работаю.
a -- b -- c <-- Master
\ \
\ d -- e <-- Branch1
\
f -- g <-- Branch2
Немного поработав над этими ветками, я обнаружил, что мне нужны изменения из Branch2 в Branch1. Я хотел бы перенести изменения в Branch2 на Branch1. Я хотел бы закончить со следующим:
a -- b -- c <-- Master
\
d -- e -- f -- g <-- Branch1
Я почти уверен, что мне нужно переместить вторую ветку на первую, но я не совсем уверен относительно правильного синтаксиса и какой ветки я должен был проверить.
Эта команда даст желаемый результат?
(Branch1)$ git rebase --onto Branch1 Branch2
Ответы
Ответ 1
-
Переключиться на Branch2
git checkout Branch2
-
Примените текущие изменения (Branch2) поверх изменений Branch1, оставаясь в Branch2:
git rebase Branch1
Что оставило бы вас с желаемым результатом в Branch2:
a -- b -- c <-- Master
\
d -- e <-- Branch1
\
d -- e -- f' -- g' <-- Branch2
Вы можете удалить Branch1.
Ответ 2
Примечание: если вы были на Branch1
, вы с Git 2.0 (Q2 2014) сможете ввести:
git checkout Branch2
git rebase -
Смотрите commit 4f40740 Брайан Гезяк modocache
:
rebase
: разрешить "-
" короткую руку для предыдущей ветки
Учить переупорядочить ту же стенографию, что и checkout
и merge
, чтобы назвать ветвь на rebase
текущей веткой; то есть, что "-
" означает "ветвь, в которой мы были ранее".
Ответ 3
Я знаю, что вы попросили Ребаз, но я бы выбрал коммиты Cherry-Pick, которые я хотел переместить из Branch2 в Branch1. Таким образом, мне не нужно было бы заботиться о том, какая ветка была создана из master, и у меня был бы больший контроль над слиянием.