Git - это набор инструментов, в котором есть несколько инструментов для выполнения одной и той же работы. Я подойду к этой проблеме следующим образом -
Записать идентификатор фиксации master- 3rd commit
с помощью git log -1 --oneline
на мастере.
Шаги:
git Checkout master
git reset --hard HEAD~2
git cherry-pick <dev- 1st commit>
git cherry-pick <master- 3rd commit>
Пояснение:
Предполагая, что на мастере 3 коммита, git reset --hard HEAD~2
отсоединит два верхних коммита [3-го и 2-го] от 1-го коммита, мастер ветки теперь указывает на 1-й коммит.
git cherry-pick <dev- 1st commit>
добавит новый коммит, такой же, как dev-1st commit для master, ветвь master теперь указывает на новый dev dev.
git cherry-pick <master- 3rd commit>
снова добавит новый коммит поверх dev dev, и теперь история будет выглядеть как -
master- new 3rd commit
dev - new 1st commit
master- old 1st commit