165 votes

Git commit sans message de commit

Comment puis-je valider les changements sans spécifier le message de validation ? Pourquoi est-ce requis par défaut ?

8 votes

Enfin, git commit -a --allow-empty-message -m '' ne veut même plus ouvrir un éditeur. Voir ma réponse ci-dessous

4 votes

Sous Windows, cette commande git commit -a --allow-empty-message -m '' fait un commit avec le message de commit " '' "Il est donc préférable d'utiliser cette commande à la place : git commit -a --allow-empty-message -m "" .

180voto

Jeremy W. Sherman Points 22019

Git requiert généralement un message non vide parce que fournir un message de livraison significatif fait partie des bonnes pratiques de développement et de la bonne gestion du dépôt. La première ligne du message de livraison est utilisée un peu partout dans git ; pour en savoir plus, lire "A Note About Git Commit Messages" .

Si vous ouvrez Terminal.app, cd dans le répertoire de votre projet, et git commit -am '' vous verrez qu'il échoue parce qu'un message de validation vide n'est pas autorisé. Les versions plus récentes de git ont la fonction
--allow-empty-message l'argument de la ligne de commande, y compris la version de git incluse dans la dernière version de Xcode. Cela vous permettra d'utiliser cette commande pour faire un commit avec un message vide :

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

Avant le --allow-empty-message vous deviez utiliser l'option commit-tree commande de plomberie. Vous pouvez voir un exemple d'utilisation de cette commande dans le chapitre "Raw Git de le livre Git .

37 votes

Je pense que la phrase "fournir un message d'engagement significatif" est fait partie des bonnes pratiques de développement" est tout simplement faux - on peut dire que fournir un message d'engagement significatif est considéré comme Je pense pour ma part que moins d'information peut parfois mener à moins de confusion, d'autant plus que git stocke évidemment les changements réels apportés au dépôt, et qu'un fichier git diff montrera à la partie intéressée exactement ce que un commit contient, sans s'appuyer sur des descriptions écrites par des humains. Les machines devraient nous épargner du travail lorsque c'est possible.

7 votes

@amn, je viens aussi de commencer à m'interroger sur toutes ces dizaines de milliers de messages d'engagement bien écrits que j'ai rédigés et qui ne seront jamais lus par personne. Pour moi maintenant, la valeur de cette habitude est qu'elle me force à regarder les changements dans une tentative de les décrire, et cela me fait parfois remarquer des bugs. Vous avez raison, cependant. Je vais envisager de prêter plus d'attention au code et moins au message de validation.

19 votes

Git n'est plus seulement utilisé pour le développement du code. Lorsque je mets à jour une page wiki de GitHub ou un document LaTeX d'Overleaf, il n'y a généralement rien à dire car je mets à jour documentation. Tout ce qui est sémantiquement significatif à propos du changement est contenu dans le diff. En fait, je me suis surpris à utiliser le texte de la modification comme le message de livraison lui-même : complètement redondant !

41voto

dalvarezmartinez1 Points 249

Et si vous lui ajoutez un alias, c'est encore mieux, non ?

git config --global alias.nccommit 'commit -a --allow-empty-message -m ""'

Maintenant, il suffit de faire un nccommit, nc parce que sans commentaire, et tout devrait être commité.

31voto

Antonio L. Points 86

Lorsque vous travaillez sur une mise à jour importante du code, si vous avez vraiment besoin d'un point de contrôle intermédiaire, vous pouvez le faire :

git commit -am'.'

ou plus court :

git commit -am.

Cela ajoute un commit avec le message .

1 votes

Et qu'est-ce que ça fait ?

5 votes

Ajoute un commit avec le message '.'.

3 votes

J'utilise cette méthode lorsque je n'ai littéralement aucun souvenir de ce que j'ai mis dans un commit et que je suis trop paresseux pour diff tout.

25voto

VonC Points 414372

Note : démarrage de git1.8.3.2 (juillet 2013), la commande suivante ( mentionné ci-dessus par Jeremy W Sherman ) n'ouvre plus d'éditeur :

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

Voir commit 25206778aac776fc6cc4887653fdae476c7a9b5a :

Si un message vide est spécifié avec l'option -m de git commit alors l'éditeur est lancé.
C'est inattendu et inutile.
Au lieu d'utiliser la longueur de la chaîne de messages pour vérifier si l'utilisateur en a spécifié une, on se souvient directement si l'option -m a été donné.


git 2.9 (juin 2016) améliore le comportement des messages vides :

Voir commit 178e814 (06 avr. 2016) par Adam Dinwoodie ( me-and ) .
Voir commettre 27014cb (07 avr. 2016) par Jeff King ( peff ) .
(fusionné par Junio C Hamano -- gitster -- sur commettre 0709261 , 22 avril 2016)

commit : ne pas ignorer un message vide donné par -m ''

  • " git commit --amend -m '' --allow-empty-message "Même si cela semble étrange, c'est une demande valide pour modifier le commit afin qu'il n'y ait pas de message du tout.
    En raison de la détection erronée de la présence de -m sur la ligne de commande, nous avons fini par garder le message du journal de la livraison originale.
  • " git commit -m "$msg" -F file " doit être rejeté si $msg est une chaîne vide ou non, mais à cause du même bogue, n'a pas été rejeté quand $msg est vide.
  • " git -c template=file -m "$msg" "devrait ignorer le modèle même si $msg est vide, mais il ne l'a pas fait et a utilisé le contenu du fichier modèle.

-5voto

coloradoblue Points 323

Le message de validation est une bonne pratique qui doit être suivie à tout moment. Sauf si vous êtes le seul développeur, ce qui n'est pas prêt de changer.

git commit -a -m 'asdfasdfadsfsdf'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X