Changer l'histoire
S'il s'agit du commit le plus récent, vous pouvez simplement le faire:
git commit --amend
Cela affiche l'éditeur avec le dernier message de validation et vous permet de modifier le message. (Vous pouvez utiliser -m
si vous souhaitez effacer l'ancien message et en utiliser un nouveau.)
Pousser
Et puis quand vous poussez, faites ceci:
git push --force-with-lease <repository> <branch>
Ou vous pouvez utiliser "+":
git push <repository> +<branch>
Ou vous pouvez utiliser --force
:
git push --force <repository> <branch>
Soyez prudent lorsque vous utilisez ces commandes.
Si quelqu'un d'autre a poussé les modifications vers la même branche, vous souhaiterez probablement éviter de détruire ces modifications. L' --force-with-lease
option est la plus sûre, car elle sera abandonnée en cas de modifications en amont (
Si vous ne spécifiez pas la branche explicitement, Git utilisera les paramètres push par défaut. Si votre paramètre de push par défaut est "correspondant", vous pouvez détruire les modifications sur plusieurs branches en même temps.
Tirer / récupérer ensuite
Quiconque a déjà tiré recevra maintenant un message d'erreur, et il devra mettre à jour (en supposant qu'il n'apporte aucune modification lui-même) en faisant quelque chose comme ceci:
git fetch origin
git reset --hard origin/master # Loses local commits
Soyez prudent lors de l'utilisation reset --hard
. Si vous avez modifié la branche, ces modifications seront détruites.
Une note sur la modification de l'historique
Les données détruites ne sont en fait que l'ancien message de validation, mais --force
ne le savent pas, et supprimeront également volontiers d'autres données. Pensez donc --force
à "Je veux détruire les données, et je sais avec certitude quelles données sont détruites." Mais lorsque les données détruites sont validées, vous pouvez souvent récupérer les anciennes validations du reflog - les données sont en fait orphelines au lieu d'être détruites (bien que les validations orphelines soient périodiquement supprimées).
Si vous ne pensez pas que vous détruisez des données, restez à l'écart de --force
... de mauvaises choses pourraient se produire .
C'est pourquoi --force-with-lease
est un peu plus sûr.