Pousser les validations vides vers la télécommande


242

J'ai poussé un commit à distance mais maintenant j'ai réalisé que le message de commit n'est pas correct. Je voudrais changer le message de commit mais AFAIK ce n'est pas possible. J'ai donc décidé de créer un commit vide avec le bon message:

git commit --allow-empty

Y a-t-il des inconvénients / conséquences à pousser des commits vides? Y a-t-il un problème que je pourrais rencontrer à l'avenir à cause de ce commit vide ??


1
Consultez cette question similaire stackoverflow.com/questions/6218199/…
Montaro

Réponses:


80

Vous ne ferez face à aucune conséquence terrible, juste l'histoire sera un peu déroutante.

Vous pouvez modifier le message de validation en faisant

git commit --amend
git push --force-with-lease # (as opposed to --force, it doesn't overwrite others' work)

MAIS cela remplacera l'histoire à distance avec la vôtre, ce qui signifie que si quelqu'un a retiré ce dépôt en attendant, cette personne va être très en colère contre vous ...

Faites-le si vous êtes la seule personne à accéder au dépôt.


5
Oui, c'est pourquoi j'ai préféré pousser empty-commit
mrutyunjay

4
@mrutyunjay s'il y a des chances que d'autres personnes retirent le repo, alors oui, je pense que c'est une meilleure option.
Gabriele Petronella

1
Vous ne ferez face à aucune conséquence terrible, juste l'histoire sera un peu déroutante - quelle terrible conséquence! ;-)
Alois Mahdal

3
Préférez --force-with-leaseéviter de perdre le travail des collaborateurs.
Kenzo

22

pousser les validations, qu'elles soient vides ou non, provoque le déclenchement éventuel de hooks git. Cela peut ne rien faire ou avoir des conséquences bouleversantes sur le monde.


9
C'est une observation sous-estimée. Oui, les validations vides peuvent être supérieures à la modification des validations poussées, mais elles ne peuvent pas être supposées sans effets secondaires s'il y a des crochets en place.
wintermute92

18

Y a-t-il des inconvénients / conséquences à pousser des commits vides?

Mis à part l'extrême confusion, quelqu'un pourrait comprendre pourquoi il y a un tas de commits sans contenu sur master, pas vraiment.

Vous pouvez changer le commit que vous avez poussé vers remote, mais le sha1 du commit (fondamentalement c'est le numéro d'identification) changera de façon permanente, ce qui modifie l'arborescence source - Vous devrez alors faire un git push -fretour vers remote.


15

Tant que vous référencez clairement l'autre commit à partir du commit vide, ça devrait aller. Quelque chose comme:

Commit message errata for [commit sha1]

[new commit message]

Comme d'autres l'ont souligné, il est souvent préférable de forcer à pousser un commit corrigé.


12
 $ git commit --allow-empty -m "Trigger Build"

2
Bien que ce code puisse résoudre la question, y compris une explication de comment et pourquoi cela résout le problème aiderait vraiment à améliorer la qualité de votre message, et entraînerait probablement plus de votes positifs. N'oubliez pas que vous répondrez à la question aux lecteurs à l'avenir, pas seulement à la personne qui pose la question maintenant. Veuillez modifier votre réponse pour ajouter des explications et donner une indication des limitations et hypothèses applicables. De l'avis
double-bip

-1

Et ça;

 git commit --allow-empty-message -m ''

Vous avez simplement supprimé le message et cela aggrave encore le problème si un commit est vide, il devrait au moins y avoir un message pourquoi.
Eric Bishard
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.