2014-05-09 16:48:06 +0000 2014-05-09 16:48:06 +0000
135
135

Y a-t-il un moyen d'éditer un message de commit sur GitHub ?

Existe-t-il un moyen de modifier un message de commit après l'avoir envoyé à GitHub ? Je vois qu'il y a une fonction “ajouter une note” ainsi qu'un commentaire en ligne, mais pas d'édition réelle d'un message de validation. Il y a également la fonction “amend commit” dans les extensions git mais cela n'édite pas le message existant.

Réponses (5)

189
189
189
2014-05-10 10:27:44 +0000
  1. git rebase -i <commit hash you want to change>^

  2. Pour tout commit que vous souhaitez modifier le message, changez pick en reword.

  3. Sauvegardez et quittez (dans vi : :wq).

  4. Pour chaque commit de ce type, vous aurez un éditeur pour modifier le message de commit. Modifiez-le comme bon vous semble, sauvegardez et quittez.

  5. Vous pouvez maintenant les télécharger sur github en utilisant git push origin --force.

Si vous avez juste besoin de corriger votre dernier commit, vous pouvez remplacer les étapes 1-4 par git commit --amend.

35
35
35
2018-06-18 09:49:45 +0000

Dans Intellij Idea, vous pouvez le faire si facilement.

  1. contrôle de la version ouverte (historique)
  2. Sélectionnez l'onglet “Log”
  3. Sélectionnez commit pour modifier le commentaire
  4. Appuyez sur F2 (Mac fn + F2), et mettez à jour votre message de commit
3
3
3
2019-03-14 07:29:36 +0000

Prémisse :

si votre git-graph ressemble à …

O target-commit that you want to change its message [df9c192]
|
O parent-commit [b7ec061]
|
O

(df9c192 et b7ec061 sont les hachages de commit de target-commit et de parent-commit, séparément)

Solution :

vous pouvez simplement taper les instructions suivantes…

git reset --soft b7ec061
git commit -m "your_new_description"
git push -f

Explication :

  1. git reset --soft b7ec061 conservera vos modifications de fichiers et sera réinitialisé au parent-commit (c'est-à-dire b7ec061)
  2. git commit -m "..." va créer localement un nouveau commit
  3. git push -f poussera votre nouveau commit vers le serveur et remplacera l'ancien (i.e. df9c192)
2
2
2
2018-08-08 22:27:59 +0000

Une autre option consiste à créer un “errata commit” supplémentaire (et push) qui fait référence à l'objet commit qui contient l'erreur – le nouveau errata commit fournit également la correction. Un commit d'errata est un commit sans changement de code substantiel mais avec un message de commit important – par exemple, ajoutez un caractère espace à votre fichier readme et commit qui change avec le message de commit important, ou utilisez l'option git --allow-empty. C'est certainement plus facile et plus sûr que le rebasage, cela ne modifie pas la véritable histoire, et cela garde l'arbre des branches propre (utiliser amend est aussi un bon choix si vous corrigez le dernier commit, mais un commit d'errata peut être un bon choix pour les anciens commit). Ce genre de chose arrive si rarement que le simple fait de documenter l'erreur est suffisant. À l'avenir, si vous devez rechercher un mot-clé de fonction dans un journal git, le commit original (erroné) peut ne pas apparaître parce que le mauvais mot-clé a été utilisé dans ce commit original (la faute de frappe originale) – cependant, le mot-clé apparaîtra dans le commit d'errata qui vous dirigera alors vers le commit original qui a eu la faute de frappe. Voici un exemple :

$ git log commit 0c28141c68adae276840f17ccd4766542c33cf1d Author: First Last Date: Wed Aug 8 15:55:52 2018 -0600 Errata commit: This commit has no substantive code change. THis commit is provided only to document a correction to a previous commit message. This pertains to commit object e083a7abd8deb5776cb304fa13731a4182a24be1 Original incorrect commit message: Changed background color to red Correction (\*change highlighted\*): Changed background color to \*blue\* commit 032d0ff0601bff79bdef3c6f0a02ebfa061c4ad4 Author: First Last Date: Wed Aug 8 15:43:16 2018 -0600 Some interim commit message commit e083a7abd8deb5776cb304fa13731a4182a24be1 Author: First Last Date: Wed Aug 8 13:31:32 2018 -0600 Changed background color to red
0
0
0
2019-08-24 11:01:51 +0000

Réponse de @Mureinik est bonne mais pas compréhensible par un débutant.

Première méthode:

  1. Si vous voulez seulement éditer le dernier message de validation, alors vous n'avez besoin que de git commit --amend, vous verrez :
<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
#
  1. Comme vous pouvez le voir, le message de validation en haut sans aucun préfixe de commande comme pick, c'est déjà la page de modification et vous pouvez directement modifier le message en haut et sauvegarder&quitter, par exemple :
<your new correction commit message> 

# Please enter the commit message for your changes. Lines starting
....
  1. Ensuite, faites git push -u origin master --force ou <how you push normally> --force. La clé est ici --force.

Deuxième méthode:

  1. Vous pouvez voir le hachage du commit par git log ou l'extraire de l'url du dépôt, par exemple dans mon cas c'est 881129d771219cfa29e6f6c2205851a2994a8835

  2. Ensuite, vous pouvez faire git rebase --interactive 881129d771219cfa29e6f6c2205851a2994a8835 ou git rebase -i HEAD^ (si c'est le dernier)

  3. Vous verriez :

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
  1. Mais si vous voyez noop alors vous avez probablement mal tapé, par exemple si vous faites git rebase -i 881129d771219cfa29e6f6c2205851a2994a88 ce qui manque ^ à la fin, vous feriez mieux de quitter l'éditeur sans sauvegarder et de trouver la raison :
noop

# Rebase 8db7e8b..fa20af3 onto 8db7e8b
...
  1. Si vous ne voyez pas noop, alors changez simplement le mot pick en reword , l'autre reste juste (vous ne modifiez pas le message de validation à ce stade), e. g :
reword <commit hash> <your current commit message>

# Rebase 8db7e8b..fa20af3 onto 8db7e8b
#
# Commands:
# p, pick = use commit
...
  1. Save&quit affichera la page edit de la même manière que la méthode #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
#
  1. Editez le message du haut, de la même manière que la méthode #1 et save&quit, par exemple :
<your new correction commit message> 

# Please enter the commit message for your changes. Lines starting
....
  1. Encore une fois, de la même manière que la méthode #1, faites git push -u origin master --force ou <how you push normally> --force. La clé est ici --force.

Pour plus d'informations, veuillez lire le document .