Предполагая, что граф фиксации выглядит так:
| (A) ---------> (B) ----------> (C)
| ^
| (master)
Вы хотите сначала оформить заказ master
и создать ветку, которая указывает, где master
в данный момент находится:
git checkout master
git branch pointer master
Теперь это должно выглядеть следующим образом:
| (A) ---------> (B) ----------> (C)
| ^
| (HEAD, master, pointer)
Теперь, когда вы уже на master
, мы скажем ветви master
переместиться назад на один коммит:
git reset master~1
Теперь master
следует переместить на один пробел назад, но ветвь pointer
все еще находится в самой последней фиксации:
| (A) ---------> (B) ----------> (C)
| ^ ^
| (HEAD, master) (pointer)
На этом этапе вы можете нажать master
на удаленном илигде бы то ни было, затем перенесите его назад в ветку pointer
.Вы можете убить ветку pointer
в этой точке:
git push origin master
git merge --ff-only pointer
git branch -D pointer
Финал:
| (A) ---------> (B) ----------> (C)
| ^ ^
| [ origin/master ] (HEAD, master)