Llegué a este enfoque (y probablemente sea exactamente lo mismo que usar rebase interactivo), pero para mí es algo sencillo.
Nota: presento este enfoque para ilustrar lo que puede hacer en lugar de una alternativa diaria. Dado que tiene muchos pasos (y posiblemente algunas advertencias).
Digamos que quieres cambiar commit 0
y actualmente estás enfeature-branch
some-commit---0---1---2---(feature-branch)HEAD
Pague este compromiso y cree un quick-branch
. También puede clonar su rama de características como un punto de recuperación (antes de comenzar).
?(git checkout -b feature-branch-backup)
git checkout 0
git checkout -b quick-branch
Ahora tendrá algo como esto:
0(quick-branch)HEAD---1---2---(feature-branch)
Cambios de escenario, esconde todo lo demás.
git add ./example.txt
git stash
Confirmar cambios y finalizar la compra en feature-branch
git commit --amend
git checkout feature-branch
Ahora tendrá algo como esto:
some-commit---0---1---2---(feature-branch)HEAD
\
---0'(quick-branch)
Rebase feature-branch
en quick-branch
(resolver cualquier conflicto en el camino). Aplicar alijo y eliminar quick-branch
.
git rebase quick-branch
git stash pop
git branch -D quick-branch
Y terminas con:
some-commit---0'---1'---2'---HEAD(feature-branch)
Git no duplicará (aunque realmente no puedo decir hasta qué punto) el 0 se compromete al rebasar.
Nota: todos los hash de confirmación se cambian a partir de la confirmación que originalmente teníamos la intención de cambiar.