Je me reconnais dans pas mal des problèmes mentionnés, et je suis plutôt fier, car je connais (et j'utilise) la plupart de ces "astuces"
Par contre, je ne les applique pas tout le temps, car c'est parfois prise de tête (genre tu fais un commit sur la mauvaise branche, c'est ch.... à "déplacer", alors tant pis pour la consistance des branches, il restera dessus
).
Le process dont j'ai toujours peur quand je dois le faire, c'est le rebase/squash ^^ Ca finit toujours par produire un truc qu'il ne faut pas, juste parce que je me plante dans ma résolution des merges ou autre. Une vraie plaie
C'est dans ces cas là typiquement que je copie tout le répertoire de travail, je crée une nouvelle branche, et je colle le répertoire précédent dedans
(il doit y avoir moyen de faire "mieux" et plus efficace en demandant à git de créer un patch entre l'index courant et une référence, puis d'appliquer ce patch (ou le stasher) au bon endroit, mais bon...