La réponse de @Mureinik est bonne mais incompréhensible pour les débutants.
Première méthode:
- Si vous souhaitez uniquement modifier le dernier message de validation, vous devez uniquement
git commit --amend:
<your existing commit mesage foo bar>
# Please enter the commit message fir your changes. Lines starting
# with # will be ignored, and an empty message aborts the commit.
#
# Date: Sat Aug 24 17:56:16 2019 +0800
#
# On branch is up to date with 'origin/master'.
#
# changes to be committed:
# modified: foo.py
#
- Comme vous pouvez le constater, commettez un message en haut sans préfixe de commande tel que
pick, ceci est déjà la page d'édition et vous pouvez directement éditer le message en haut et sauvegarder et quitter , par exemple:
<your new correction commit message>
# Please enter the commit message for your changes. Lines starting
....
- Alors fais
git push -u origin master --forceou <how you push normally> --force. La clé ici est --force.
Deuxième méthode:
Vous pouvez voir le commit par git logextrait ou extraire de l'URL du référentiel, par exemple dans mon cas:881129d771219cfa29e6f6c2205851a2994a8835
Ensuite, vous pouvez faire git rebase --interactive 881129d771219cfa29e6f6c2205851a2994a8835ou git rebase -i HEAD^(si le dernier)
Tu verrais:
pick <commit hash> <your current commit message>
# Rebase 8db7e8b..fa20af3 onto 8db7e8b
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
- Mais si vous voyez
noopalors vous tapez probablement mal, par exemple si vous faites git rebase -i 881129d771219cfa29e6f6c2205851a2994a88ce qui manque ^à la fin, vous feriez mieux de quitter l'éditeur sans sauvegarder et de trouver la raison:
noop
# Rebase 8db7e8b..fa20af3 onto 8db7e8b
...
- S'il n'y a pas de
noopproblème, remplacez simplement le mot pickpar reword, il ne reste plus qu'un mot (vous ne modifiez pas le message de validation à ce stade), par exemple:
reword <commit hash> <your current commit message>
# Rebase 8db7e8b..fa20af3 onto 8db7e8b
#
# Commands:
# p, pick = use commit
...
- Sauvegarder et quitter verra la page d'édition similaire à la méthode n ° 1:
<your existing commit mesage foo bar>
# Please enter the commit message fir your changes. Lines starting
# with # will be ignored, and an empty message aborts the commit.
#
# Date: Sat Aug 24 17:56:16 2019 +0800
#
# interactive rebase in progress; onto b057371
# Last command done (1 command done):
# reword d996ffb <existing commit message foo bar>
# No commands remaining.
# You are currently editing a commit while rebasing branch 'master' on 'b057371'.
#
# changes to be committed:
# modified: foo.py
#
- Editez le message en haut, de la même manière que la méthode n ° 1 et enregistrez et quittez, par exemple:
<your new correction commit message>
# Please enter the commit message for your changes. Lines starting
....
- Encore une fois, comme pour la méthode n ° 1, faites
git push -u origin master --forceou <how you push normally> --force. La clé ici est --force.
Pour plus d'informations, veuillez lire le doc .