Use gitk (* nix), o gitx (OS X) o similar en otras plataformas, y observe la confirmación que fue la raíz de su rama. A continuación, ejecute:
git rebase -i <the SHA hash of the root commit>
Por ejemplo, tengo un repositorio que inspeccioné usando gitx:
gitx screencap http://img.skitch.com/20081213-mq7qpp5nhceksdhfx14rerjgyx.jpg
Ahora que sé que el hash de la raíz que se puede ejecutar esto:
git rebase -i 38965ed29d89a4136e47b688ca10b522b6bc335f
Y mi editor aparece con esto y puedo reorganizar/aplastar/lo que quiera.
pick 50b2cff File 1 changes.
pick 345df08 File 2 changes.
pick 9894931 File 3 changes.
pick 9a62b92 File 4 changes.
pick 640b1f8 File 5 changes.
pick 1c437f7 File 6 changes.
pick b014597 File 7 changes.
pick b1f52bc File 8 changes.
pick 40ae0fc File 9 changes.
# Rebase 38965ed..40ae0fc onto 38965ed
#
# Commands:
# pick = use commit
# edit = use commit, but stop for amending
# squash = use commit, but meld into previous commit
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
estoy seguro de que hay alguna forma mágica para convencer a git para averiguar la raíz del árbol de forma automática, pero no sé lo que es.
EDIT: Esa magia es la siguiente:
git log master..other_feature | cat
que le mostrará todas las confirmaciones en esa rama, y las tuberías a gato se desactivará el localizador de manera que vea la primera inmediatamente envían.
EDIT: la combinación de lo anterior da una solución totalmente automatizada:
git rebase -i `git log master..other_feature --pretty=format:"%h" | tail -n 1`~
Por favor titular su pregunta un poco mejor. Tal vez mencione que desea hacer una rebase interactiva para todos los cambios en una rama. Preferentemente en forma de pregunta (aunque no siempre es posible). – Dustin
¿Desea volver a establecer una base en un 'maestro' modificado o simplemente editar las confirmaciones que acaba de realizar en' test-branch'? – DylanYoung