Comment git rebase-i pour une gamme de commits?

Puis-je écraser une plage de validations pour une branche de fonctionnalité/sujet locale en utilisant rebase qui n'inclut pas la validation la plus récente? C'est pour les commits que je veux préparer avant qu'ils ne soient fusionnés et poussés vers un repo public.

Je travaillais rapidement et j'ai fait un tas de changements mineurs avec des titres et des descriptions médiocres que je veux écraser en deux ou trois commits logiques séparés avec de bons commentaires. Puis-je sélectionner une plage de commits entre 329aed9 et af39283 qui pourrait être à tout moment dans la courte histoire de cette branche de fonctionnalité?

git rebase -i RANGE_START_COMMIT_ID RANGE_LAST_COMMIT_ID

Merci!

24
demandé sur Dylan Valade 2011-10-13 21:41:25

2 réponses

Vous pouvez toujours créer une nouvelle branche avec git checkout -b new_branch af39283, puis la rebaser. Cependant, si vous voulez inclure les commits ultérieurs à un moment donné, il n'y a pas de moyen de les rebaser. Le SHA1 pour un commit dépend de tous ses commits ancêtres.

11
répondu Karl Bielefeldt 2011-10-13 18:55:45

Donc, ce n'est pas tout à fait clair ce que vous entendez par "ne pas inclure" le commit le plus récent, mais quand vous faites un rebase -i Vous êtes capable d'écraser/réorganiser/reformuler/réparer/supprimer les commits précédents sans avoir à faire quoi que ce soit au dernier commit. Vous réécrivez bien sûr l'historique en dessous, donc son diff sera réappliqué et ce sera un objet de validation différent après le rebase, mais puisque vous n'avez pas poussé cela publiquement (et vous réécrivez le reste) cela ne devrait pas avoir beaucoup d'importance.

1
répondu Matt Enright 2011-10-13 18:52:56