Git commit sans message de commit

108

Comment puis-je valider des modifications sans spécifier de message de validation? Pourquoi est-il requis par défaut?

Nik
la source
6
Enfin, git commit -a --allow-empty-message -m ''n'ouvrira même plus un éditeur. Voir ma réponse ci
VonC
2
Sous Windows cette commande git commit -a --allow-empty-message -m ''marques engagent à commettre un message « ''», il est donc préférable d'utiliser cette commande à la place: git commit -a --allow-empty-message -m "".
tav

Réponses:

137

git nécessite généralement un message non vide car fournir un message de validation 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 validation est utilisée partout dans git; pour en savoir plus, lisez "Une note sur les messages Git Commit" .

Si vous ouvrez Terminal.app, cddans le répertoire de votre projet et git commit -am '', vous verrez qu'il échoue car un message de validation vide n'est pas autorisé. Les nouvelles versions de git ont l'
--allow-empty-messageargument de ligne de commande, y compris la version de git incluse avec 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-messagedrapeau, vous deviez utiliser la commit-treecommande de plomberie. Vous pouvez voir un exemple d'utilisation de cette commande dans le chapitre "Raw Git" du livre Git .

Jeremy W. Sherman
la source
1
Les versions plus récentes de gitont l' --allow-empty-messageargument de ligne de commande. Consultez la documentation ici . Il mentionne que vous étiez capable d'accomplir la même chose en utilisant la commande de plomberie git-commit-tree.
Jeremy W. Sherman
18
Je pense que la phrase "fournir un message de validation significatif fait partie d'une bonne pratique de développement" est tout simplement erronée - on peut dire que fournir un message de validation significatif est considéré comme faisant partie d'une bonne pratique de développement, car la déclaration est de toute façon source de division - je pour ma part pense que moins d'informations conduit parfois à moins de confusion, d'autant plus que git stocke évidemment les changements réels dans le référentiel, et a git diffmontrera à la partie intéressée exactement ce qu'un commit contient, sans s'appuyer sur des descriptions écrites humaines. Les machines devraient nous éviter le travail lorsque cela est possible.
amn le
2
@amn, j'ai aussi commencé à m'interroger sur tous ces dizaines de milliers de messages de commit bien écrits que j'ai écrits et qui ne seront jamais lus par personne. Pour moi maintenant, la valeur de cette habitude est qu'elle me force à regarder à travers les changements pour tenter de les décrire, et cela me fait parfois remarquer des bugs. Vous avez raison, cependant. J'envisagerai de prêter plus d'attention au code et moins au message de validation.
osa
7
Git n'est plus uniquement utilisé pour le développement de code. Lorsque je mets à jour une page wiki GitHub ou un document Overleaf LaTeX, il n'y a généralement rien à dire car je mets à jour la documentation. Tout ce qui a une signification sémantique sur le changement est contenu dans le diff. En fait, je me suis retrouvé à utiliser le texte du changement comme message de validation lui-même: complètement redondant!
Jim Pivarski le
1
@amn, parfois la sortie de git diffn'est pas explicite, même si le committer le croit.
cowlinator
26

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

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

Maintenant, vous faites juste un nccommit, nc à cause de l'absence de commentaire, et tout devrait être validé.

dalvarezmartinez1
la source
19

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

git commit -am'.'

ou plus court:

git commit -am.
apathique
la source
Et qu'est-ce que cela fait?
fishinear
Ajoute un commit avec le message '.'
nonchalante
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 difftout cela.
TheTechRobo36414519
16

Remarque: à partir de git1.8.3.2 (juillet 2013), la commande suivante ( mentionnée ci-dessus par Jeremy W Sherman ) n'ouvrira plus d'éditeur:

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

Voir commit 25206778aac776fc6cc4887653fdae476c7a9b5a :

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


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

Voir commit 178e814 (06 avril 2016) par Adam Dinwoodie ( me-and) .
Voir commit 27014cb (07 avril 2016) par Jeff King ( peff) .
(Fusionné par Junio ​​C Hamano - gitster- dans commit 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, est une demande valide de modification du commit pour ne pas avoir de message du tout.
    En raison de la détection erronée de la présence de -msur la ligne de commande, nous avons fini par conserver le message du journal du commit d'origine.
  • " git commit -m "$msg" -F file" devrait être rejeté, qu'il s'agisse d' $msgune chaîne vide ou non, mais en raison du même bogue, il n'a pas été rejeté lorsqu'il $msgest vide.
  • " git -c template=file -m "$msg"" doit ignorer le modèle même lorsque$msg est vide, mais il ne l'a pas fait et a utilisé à la place le contenu du fichier modèle.
VonC
la source
3

Vous n'avez pas besoin de git pour accomplir cela. L'utilisation créative d'une fonction bash fera très bien l'affaire. Si vous ne vous souciez pas des messages, définissez-en un par défaut et oubliez-le.

function gitcom() {
  git commit -m "my default commit message"
}

Si vous vous sentez vraiment aventureux, vous pouvez ajouter, vous engager et pousser avec une seule commande

function gitzap() {
  git add . && git commit -m "whatevs" && git push $1 $2
}

Que vous exécuteriez alors comme

gitzap origin master

Vous pouvez même aller plus loin et utiliser parse_git_branch pour vous enregistrer quelques frappes là-bas, ou définir une valeur par défaut commune «origin» et «master».

Steven Garcia
la source
1
Pourriez-vous fournir plus de détails sur la configuration de cette fonction bash?
adaam
1
En supposant que vous soyez sur OSX ou Linux, vous pouvez copier ces fonctions et les placer dans votre .profile (devrait être dans votre dossier personnel, sinon créez-le). Ouvrez une nouvelle fenêtre de console et ces commandes seront disponibles pour vous. Toute modification apportée à ces fichiers vous obligera à actualiser la session bash afin que vous puissiez accélérer les choses en ajoutant les alias suivants à ce fichier: alias ea = "subl ~ / .profile" # subl est mon éditeur de texte, remplacez-le par le vôtre alias er = "source ~ / .profile" # cela va réinitialiser Maintenant, quand vous voulez ajouter des raccourcis, il vous suffit de taper "ea" (modifier les alias) Et pour actualiser er
Steven Garcia
2
Si vous avez appelé les scripts git-comet git-zap(sans extension) et placé les git quelque part peut les trouver ( par exemple quelque part dans votre PATH), traite git eux comme des commandes git régulières et vous pouvez les appeler comme ceci: git com,git zap origin master
Manuzor
1
en bash c'est soit function gitcom {ou gitcom() {TMK, réparer?
2

Git nécessite qu'un commit ait un commentaire, sinon il n'acceptera pas le commit.

Vous pouvez configurer un modèle par défaut avec git comme message de validation par défaut ou rechercher l'indicateur --allow-empty-message dans git. Je pense (pas sûr à 100%) que vous pouvez reconfigurer git pour accepter les messages de validation vides (ce qui n'est pas une si bonne idée). Normalement, chaque commit devrait être un peu de travail qui est décrit par votre message.

Daniel Kurka
la source
1
Je ne sais pas pourquoi cette réponse a été votée à la baisse. Je suis d'accord que forcer Git à accepter des messages de validation vides, ou utiliser un message tel que «save», est une mauvaise idée. Arrêtez de vous battre, et apprenez simplement le fichu outil.
Jezen Thomas le
2

J'ai la configuration suivante dans mon projet privé:

git config alias.auto 'commit -a -m "changes made from [device name]"'

De cette façon, quand je suis pressé, je le fais

git auto
git push

Et au moins je sais de quel appareil le commit a été fait.

e18r
la source
1

J'ai trouvé la solution la plus simple:

git commit -am'save'

C'est tout, vous travaillerez autour des trucs de message git commit.

vous pouvez même enregistrer cette recommandation pour une fête ou d'autres choses pour le rendre plus simple.

Les membres de notre équipe écrivent toujours ces messages, mais presque personne ne les reverra.

Le message de validation est une chose qui tue le temps au moins dans notre équipe, donc nous l'ignorons.

homme de bronze
la source
-5

Le message de validation est une bonne pratique qui doit être suivie à tout moment. À moins que vous ne soyez le seul développeur et que cela ne changera pas de sitôt.

git commit -a -m 'asdfasdfadsfsdf'
coloradobleu
la source
c'est une sorte de blague. Mais pour les petits engagements que vous DEVEZ faire pour soumettre les modifications à heroku (par exemple), c'est ok dans l'instance de développeur unique.
coloradoblue