Vous pourriez faire
git rebase -i -p <some HEAD before all of your bad commits>
Ensuite, marquer tous vos mauvais s'engage en tant que "edit" dans le rebase fichier, et quand git vous demande de modifier chaque commit, ne
git commit --amend --author "New Author Name <email@address.com>"
modifier ou tout simplement fermer la fenêtre qui s'ouvre, puis faire
git rebase --continue
pour continuer le rebase.
Je ne sais pas si il est plus simple façon de faire cela avec plusieurs commits.
EDIT 1:
Comme certains commentateurs l'ont noté, si vous voulez juste changer la plus récente de la validation, la commande rebase n'est pas nécessaire. Il suffit de ne
git commit --amend --author "New Author Name <email@address.com>"
EDIT 2:
Je viens de réaliser qu'il y a une légère faille dans ma réponse initiale. Si il y a tout de fusion s'engage entre le courant HEAD
et votre <some HEAD before all your bad commits>
, alors git rebase
aplatissent eux (et par la manière, si vous utilisez GitHub pull requests, il va y avoir une tonne de fusion s'engage dans ton histoire). Ce qui peut souvent conduire à des résultats très différents de l'histoire (en double, des changements peuvent être "relocalisée"), et dans le pire des cas, elle peut conduire à des git rebase
vous demandant de résoudre des situations difficiles conflits de fusion (qui étaient probablement déjà résolu dans la fusion s'engage). La solution est d'utiliser l' -p
le drapeau en git rebase
, ce qui permettra de préserver la fusion de la structure de votre histoire. La page de manuel pour git rebase
avertit que l'utilisation d' -p
et -i
peut entraîner des problèmes, mais dans l' BUGS
l'article il est dit "d'Édition s'engage et en reformulant leurs messages de validation devrait fonctionner correctement."
J'ai ajouté -p
à la commande ci-dessus. Pour le cas où vous êtes simplement en changeant la plus récente commit (mon EDIT 1 ci-dessus), ce n'est pas un problème.
Note supplémentaire:
Vous pouvez passer de l'ouverture de l'éditeur de complètement ici en ajoutant -F .git/rebase-merge/message
de sorte que la commande sera:
git commit --amend --author "New Author Name <email@address.com>" \
-F .git/rebase-merge/message && \
git rebase --continue