J'ai fait un commit git et un push ultérieur. Je voudrais changer le message de commit. Si je comprends bien, cela n'est pas conseillé car quelqu'un aurait peut-être extrait du référentiel distant avant de procéder à de telles modifications. Et si je sais que personne n'a tiré?
Y a-t-il un moyen de faire cela?
S'il s'agit du commit le plus récent, vous pouvez simplement faire ceci:
git commit --amend
Ceci fait apparaître 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.)
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 insère des modifications dans la même branche, vous souhaitez probablement éviter de les détruire. L'option --force-with-lease
est la plus sûre, car elle sera abandonnée s'il y a des modifications en amont (
Si vous ne spécifiez pas explicitement la branche, Git utilisera les paramètres Push par défaut. Si votre paramètre Push par défaut est "matching", vous pouvez alors détruire les modifications de plusieurs branches à la fois.
Tous ceux qui ont déjà tiré vont maintenant recevoir un message d'erreur et ils devront mettre à jour (en supposant qu'ils ne font pas de changements eux-mêmes) en faisant quelque chose comme ça:
git fetch Origin
git reset --hard Origin/master # Loses local commits
Soyez prudent lorsque vous utilisez reset --hard
. Si vous apportez des modifications à la branche, ces modifications seront détruites.
Les données détruites sont en réalité l’ancien message de validation, mais --force
ne le sait pas et supprimera volontiers d’autres données. Pensez donc à --force
comme "Je veux détruire des données et je sais avec certitude quelles données sont en train d'être détruites." Mais lorsque les données détruites sont validées, vous pouvez souvent récupérer les anciens commits du journal (les données sont en réalité orphelines au lieu de les détruire].
Si vous ne pensez pas détruire les données, éloignez-vous de --force
... de mauvaises choses peuvent arriver .
C'est pourquoi --force-with-lease
est un peu plus sûr.
Dis le :
git commit --amend -m "New commit message"
et alors
git Push --force
Pourrait être en retard à la fête, voici une réponse que je ne vois pas ici.
Step1 : git rebase -i HEAD~n
pour créer une rebase interactive pour la dernière modification n
affectée.
git fera apparaître un éditeur pour gérer ces commits, remarquez cette commande: # r, reword = use commit, but edit the commit message
, c'est exactement ce dont nous avons besoin.
Étape 2 : remplacez pick
par r
pour les commits pour lesquels vous souhaitez mettre à jour le msg . Enregistrez et fermez l'éditeur.
Step3 : dans les fichiers de validation suivants, mettez à jour le message de validation à votre guise
Étape 4 : après que tous les commits soient envoyés, les messages sont mis à jour. vous voudrez peut-être faire git Push -f
pour mettre à jour la télécommande.
Utilisez ces deux étapes dans la console:
git commit --amend -m "new commit message"
et alors
git Push -f
Terminé :)
Il est à noter que si vous utilisez Push --force
avec plusieurs références, ils seront TOUS modifiés en conséquence. Assurez-vous de bien indiquer où votre dépôt Git est configuré pour Push to. Heureusement, il existe un moyen de protéger légèrement le processus en spécifiant une seule branche à mettre à jour. Lisez les pages de manuel de git:
Notez que --force s'applique à toutes les références qui sont poussées, et donc à l'aide de avec Push.default réglé sur correspondant ou avec plusieurs Push les destinations configurées avec remote. *. Push peuvent écraser les références autres que que la branche actuelle (y compris les références locales strictement situées derrière leur homologue distante). Pour forcer un Push à une seule branche, utilisez un + devant le refspec to Push (par exemple, git Push Origin + master to force a Push vers la branche master).
Si vous souhaitez modifier un commit plus ancien, pas le dernier, vous devrez utiliser la commande rebase
comme expliqué ici, page d'aide Github , dans la section Modification du message de plusieurs messages de commit plus anciens
Commande 1 .
git commit --amend -m "New and correct message"
Ensuite,
Commande 2 .
git Push Origin --force
git commit --amend
puis éditez puis changez le message dans la fenêtre en cours. Après cela
git Push --force-with-lease
Cela fonctionne assez bien pour moi,
git checkout Origine/nom de la branche
si vous êtes déjà dans la branche alors il vaut mieux faire tirer ou rebasonner
git pull
ou
git -c core.quotepath=false fetch Origin --progress --Prune
Plus tard, vous pouvez simplement utiliser
git commit --amend -m "Your message here"
ou si vous voulez ouvrir l'éditeur de texte, utilisez
git commit --amend
Je préférerai utiliser l'éditeur de texte si vous avez beaucoup de commentaires. Vous pouvez définir votre éditeur de texte préféré avec la commande
git config --global core.editor your_preffered_editor_here
Quoi qu’il en soit, quand vous avez fini de changer le message de commit, sauvegardez-le et quittez
puis courir
git Push --force
Et tu as fini
Une autre option consiste à créer une "validation d'errata" supplémentaire (et Push) faisant référence à l'objet de validation contenant l'erreur. La nouvelle validation d'errata fournit également la correction. Une validation errata est une validation sans modification de code de fond, mais un message de validation important. Par exemple, ajoutez un espace dans votre fichier Lisez-moi et validez cette modification avec le message de validation important, ou utilisez l'option git --allow-empty
. C’est certainement plus facile et plus sûr que de changer de base, cela ne modifie pas l’histoire réelle et garde l’arbre de branche propre (utiliser amend
est également un bon choix si vous corrigez le dernier commit, mais un commit errata peut être un bon choix pour anciens commets). Ce genre de chose arrive si rarement que le simple fait de documenter l'erreur est suffisant. À l'avenir, si vous devez rechercher dans un journal git un mot-clé de fonctionnalité, le commit original (erroné) risque de ne pas s'afficher car le mot de passe incorrect a été utilisé dans ce commit original (la faute de frappe d'origine). Toutefois, le mot-clé apparaîtra. dans le commit d'errata qui vous indiquera ensuite le commit d'origine contenant la faute de frappe. Voici un exemple:
$ git log commit 0c28141c68adae276840f17ccd4766542c33cf1d Auteur: premier dernier Date: mer. août 8 15:55:52 2018-0600 Errata commit: Ce commit n'a pas de changement de code important . Ce commit est fourni uniquement pour documenter une correction à un message de commit précédent . Ceci concerne l'objet commit e083a7abd8deb5776cb304fa13731a4182a24be1 Message de validation incorrect d'origine: Couleur de fond changée en rouge Correction (* changement mis en évidence *): Couleur d'arrière-plan modifiée en * bleu * Commettre 032d0ff0601bff79bdef3c6f0a02ebfa061c4ad4 Author: Premier Dernier Date: mer. Août 8 15:43:16 2018 - 0600. Un message de validation provisoire Commit e083a7abd8deb5776cb304fa13731a4182a24be1 Author: premier dernier : Mer. Août 8 13:31:32 2018-0600 Couleur de fond changée en rouge
informations supplémentaires pour le même problème si vous utilisez bitbucket pipeline
modifier votre message
git commit --amend
Pousser au serveur
git Push --force <repository> <branch>
puis ajoutez --force à votre commande Push sur le pipeline
git ftp Push --force
Cela supprimera votre ou vos précédentes validations et poussera votre actuel.
enlever le --force après le premier push
je l'ai essayé sur le pipeline bitbucket et son bon fonctionnement