Kam zu diesem Ansatz (und es ist wahrscheinlich genau das gleiche wie die Verwendung von interaktiver Rebase), aber für mich ist es ziemlich einfach.
Hinweis: Ich präsentiere diesen Ansatz, um zu veranschaulichen, was Sie tun können, anstatt eine alltägliche Alternative zu sein. Da es viele Schritte hat (und möglicherweise einige Einschränkungen.)
Angenommen, Sie möchten das Commit ändern 0
und sind gerade aktivfeature-branch
some-commit---0---1---2---(feature-branch)HEAD
Kasse zu diesem Commit und erstelle ein quick-branch
. Sie können Ihren Feature-Zweig auch als Wiederherstellungspunkt klonen (bevor Sie beginnen).
?(git checkout -b feature-branch-backup)
git checkout 0
git checkout -b quick-branch
Sie werden jetzt so etwas haben:
0(quick-branch)HEAD---1---2---(feature-branch)
Bühnenwechsel, alles andere verstauen.
git add ./example.txt
git stash
Übernehmen Sie die Änderungen und checken Sie zurück zu feature-branch
git commit --amend
git checkout feature-branch
Sie werden jetzt so etwas haben:
some-commit---0---1---2---(feature-branch)HEAD
\
---0'(quick-branch)
Rebase feature-branch
auf quick-branch
(lösen Konflikte auf dem Weg). Stash auftragen und entfernen quick-branch
.
git rebase quick-branch
git stash pop
git branch -D quick-branch
Und am Ende haben Sie:
some-commit---0'---1'---2'---HEAD(feature-branch)
Git wird die 0-Festschreibung beim erneuten Basieren nicht duplizieren (obwohl ich nicht wirklich sagen kann, inwieweit).
Hinweis: Alle Commit-Hashes werden ab dem Commit geändert, den wir ursprünglich ändern wollten.