Question Changement du message de commit git après le push (étant donné que personne n'a tiré de la télécommande)


J'ai fait un git commit et une poussée subséquente. Je voudrais changer le message de validation. Si je comprends bien, ce n'est pas conseillé parce que quelqu'un pourrait avoir tiré du dépôt distant avant que je fasse de tels changements. Et si je sais que personne n'a tiré?

Y a-t-il un moyen de faire cela?


702
2018-01-24 01:58


origine


Réponses:


Changer l'histoire

Si c'est le commit le plus récent, vous pouvez simplement faire ceci:

git commit --amend

Cela fait apparaître l'éditeur avec le dernier message de validation et vous permet de modifier le message. (Vous pouvez utiliser -m si vous voulez 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é des changements à la même branche, vous voudrez probablement éviter de détruire ces changements. le --force-with-lease l'option est la plus sûre, car elle s'interrompra s'il y a des changements 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 poussée par défaut est "correspondant", vous pouvez détruire les modifications sur plusieurs branches en même temps.

Tirer / aller chercher après

Quiconque a déjà tiré un message d'erreur, et il devra mettre à jour (en supposant qu'il n'y a pas de modification) 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 avez des changements dans la branche, ces changements seront détruits.

Une note sur la modification de l'historique

Les données détruites est vraiment juste l'ancien message de validation, mais --force ne le sait pas, et supprimera heureusement d'autres données aussi. Alors pensez à --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 de la part de la refonte. orphelin au lieu de détruit (bien que les commits orphelins soient périodiquement supprimés).

Si vous ne pensez pas que vous détruisez des données, restez loin de --force... de mauvaises choses pourraient arriver.

C'est pourquoi --force-with-lease est un peu plus sûr.


1015
2018-01-24 02:02



Dis le :

git commit --amend -m "New commit message"

et alors

git push --force

298
2017-12-31 06:45



Peut-être en retard à la fête, voici une réponse que je ne vois pas ici.

Étape 1: git rebase -i HEAD~n faire le rebasage interactif pour le dernier n commits affectés.

git affichera un éditeur pour gérer ces commits, notez cette commande: # r, reword = use commit, but edit the commit message, c'est exactement ce dont nous avons besoin.

Étape 2: changement pick à r pour les commits que vous voulez mettre à jour le msg. Enregistrez et fermez l'éditeur.

Étape 3: dans les fichiers de validation suivants, mettez à jour le msg de validation comme vous le souhaitez

Étape 4: après tout committe msgs sont mis à jour. vous pourriez vouloir faire git push -f mettre à jour la télécommande.


143
2018-02-01 19:17



Utilisez ces deux étapes dans la console:

git commit --amend -m "new commit message"

et alors

git push -f

Terminé :)


34
2018-06-19 09:48



Il convient de noter que si tu utilises push --forceavec plusieurs références, ils seront tous modifiés en conséquence. Assurez-vous de faire attention à l'endroit où votre repo git est configuré pour pousser. Heureusement, il existe un moyen de protéger légèrement le processus en spécifiant une seule branche à mettre à jour. Lisez les pages man git:

Notez que --force s'applique à tous les refs qui sont poussés, donc en utilisant   avec push.default mis à l'appariement ou avec plusieurs push   destinations configurées avec remote. *. push peut écraser d'autres références   que la branche actuelle (y compris les refs locaux qui sont strictement derrière   leur homologue à distance). Pour forcer une poussée vers une seule branche, utilisez un +   devant le refspec pour pousser (par exemple git push origine + master pour forcer   une poussée vers la branche maîtresse).


17
2018-03-23 23:47



Si vous voulez modifier un ancien commit, pas le dernier, vous devrez utiliser rebase commande comme expliqué ici,Github page d'aide , sur le Modification du message de messages de validation anciens ou multiples section


9
2017-10-28 10:43



Commander 1.

git commit --amend -m "New and correct message"

Alors,

Commander 2.

git push origin --force

5
2018-04-18 03:52



git commit --amend

puis modifiez puis modifiez le message dans la fenêtre en cours. Après que faire

git push --force-with-lease

3
2018-01-05 06:09



Cela fonctionne pour moi très bien,

git checkout origine / nom de la succursale

si vous êtes déjà dans la branche, il est préférable de faire tirer ou rebaser

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 aimez ouvrir l'éditeur de texte, utilisez

git commit --amend

Je préférerais utiliser l'éditeur de texte si vous avez beaucoup de commentaires. Vous pouvez définir votre éditeur de texte préféré avec commande

git config --global core.editor your_preffered_editor_here

De toute façon, quand vous avez fini de changer le message de validation, enregistrez-le et quittez

puis courir

git push --force

Et tu as fini


1
2018-05-12 13:51