Przyszło do tego podejścia (i prawdopodobnie jest to dokładnie to samo, co przy użyciu interaktywnego rebase), ale dla mnie jest to dość proste.
Uwaga: przedstawiam to podejście w celu zilustrowania tego, co możesz zrobić, zamiast codziennej alternatywy. Ponieważ ma wiele kroków (i ewentualnie pewne zastrzeżenia).
Powiedz, że chcesz zmienić zatwierdzenie 0
i jesteś aktualnie włączonyfeature-branch
some-commit---0---1---2---(feature-branch)HEAD
Przejdź do tego zatwierdzenia i utwórz quick-branch
. Możesz także sklonować gałąź funkcji jako punkt przywracania (przed rozpoczęciem).
?(git checkout -b feature-branch-backup)
git checkout 0
git checkout -b quick-branch
Będziesz teraz mieć coś takiego:
0(quick-branch)HEAD---1---2---(feature-branch)
Zmieniaj scenę, przechowuj wszystko inne.
git add ./example.txt
git stash
Zatwierdź zmiany i wróć do feature-branch
git commit --amend
git checkout feature-branch
Będziesz teraz mieć coś takiego:
some-commit---0---1---2---(feature-branch)HEAD
\
---0'(quick-branch)
Rebase feature-branch
na quick-branch
(rozwiąż wszelkie konflikty po drodze). Zastosuj skrytkę i usuń quick-branch
.
git rebase quick-branch
git stash pop
git branch -D quick-branch
I kończysz na:
some-commit---0'---1'---2'---HEAD(feature-branch)
Git nie powieli się (chociaż nie mogę tak naprawdę powiedzieć, do jakiego stopnia) zatwierdzenie 0 podczas bazowania.
Uwaga: wszystkie skróty zatwierdzania są zmieniane, zaczynając od zatwierdzenia, które pierwotnie zamierzaliśmy zmienić.