Zakładając taki wykres zatwierdzenia:
| (A) ---------> (B) ----------> (C)
| ^
| (master)
Chcesz najpierw zapłacić master
i utworzyć gałąź, która wskazuje, gdzie master
obecnie 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 master
gałęzi, aby cofnęła się o jedno zatwierdzenie:
git reset master~1
Teraz master
powinno zostać cofnięte o jedno miejsce, ale pointer
gałąź 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 pointer
gałęzi. W pointer
tym 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)