Zakładając taki wykres zatwierdzenia:
| (A) ---------> (B) ----------> (C)
| ^
| (master)
Chcesz najpierw zapłacić masteri utworzyć gałąź, która wskazuje, gdzie masterobecnie jest:
git checkout master
git branch pointer master
Powinien teraz wyglądać tak:
| (A) ---------> (B) ----------> (C)
| ^
| (HEAD, master, pointer)
Teraz, gdy już jesteś włączony master, powiemy mastergałęzi, aby cofnęła się o jedno zatwierdzenie:
git reset master~1
Teraz masterpowinno zostać cofnięte o jedno miejsce, ale pointergałąź nadal znajduje się na ostatnim zatwierdzeniu:
| (A) ---------> (B) ----------> (C)
| ^ ^
| (HEAD, master) (pointer)
W tym momencie możesz naciskać master do pilota lub gdziekolwiek, a następnie szybko do przodu scalić go z powrotem do pointergałęzi. W pointertym momencie możesz zabić gałąź:
git push origin master
git merge --ff-only pointer
git branch -D pointer
Finał:
| (A) ---------> (B) ----------> (C)
| ^ ^
| [ origin/master ] (HEAD, master)