Entré dans cette approche (et c'est probablement exactement la même chose que l'utilisation de rebase interactif) mais pour moi, c'est un peu simple.
Remarque: Je présente cette approche dans le but d'illustrer ce que vous pouvez faire plutôt que comme une alternative quotidienne. Puisqu'il comporte de nombreuses étapes (et éventuellement quelques mises en garde.)
Dites que vous souhaitez modifier le commit 0
et que vous êtes actuellement surfeature-branch
some-commit---0---1---2---(feature-branch)HEAD
Commander à ce commit et créer un quick-branch
. Vous pouvez également cloner votre branche de fonctionnalité en tant que point de récupération (avant de commencer).
?(git checkout -b feature-branch-backup)
git checkout 0
git checkout -b quick-branch
Vous allez maintenant avoir quelque chose comme ça:
0(quick-branch)HEAD---1---2---(feature-branch)
Les changements de scène, cachent tout le reste.
git add ./example.txt
git stash
Validez les modifications et revenez à feature-branch
git commit --amend
git checkout feature-branch
Vous allez maintenant avoir quelque chose comme ça:
some-commit---0---1---2---(feature-branch)HEAD
\
---0'(quick-branch)
Rebaser feature-branch
sur quick-branch
(résoudre tout conflit en cours de route). Appliquer la cachette et retirer quick-branch
.
git rebase quick-branch
git stash pop
git branch -D quick-branch
Et vous vous retrouvez avec:
some-commit---0'---1'---2'---HEAD(feature-branch)
Git ne dupliquera pas (bien que je ne puisse pas vraiment dire dans quelle mesure) le commit 0 lors du rebasage.
Remarque: tous les hachages de validation sont modifiés à partir de la validation que nous avions initialement l'intention de modifier.