Так-же если допустим нечаянно смержили ветку staging в master, как этот косяк откатить.
git revert -m 1 <id-of-merge-commit>
-m 1
означает, что при мёрже мастер был первой смёрженной веткой.
По сути в master появилась куча разбросанных по времени коммитов, а как откатить я не знаю.
Это только выглядит так, потому что по умолчанию git log сортирует коммиты по времени. Но содержимое смёрженных веток на самом деле нигде не перемешивается,
git reset
или
git revert
коммита соответствующего мёржу отменяет все коммиты из смёрженной ветки.