web-dev-qa-db-fra.com

Préparer un message git commit avant de commettre?

Est-il possible de préparer un message de validation avant une validation, ce qui signifie que je vais taper mon message de validation avant la validation réelle ou pendant le répertoire de travail afin de savoir sur quoi je travaille et de savoir en quoi cette branche ou cette validation sera sur. Quand je dis «avant», je ne parle pas seulement de quelques secondes avant d’entrer dans le commit sur la ligne de commande. Je veux dire littéralement juste après une validation ou au début d'une branche, de sorte que la prochaine validation héritera automatiquement du message dans la file d'attente ou de ce que cela puisse être appelé. 

Naturellement, je peux mettre ces messages pendant le commit, il y a une différence pour moi. Et je peux voir que l’argument de bien git n’est pas fait pour ça aussi. Je suis juste curieux à ce sujet.

Je sais aussi que je peux donner à mes branches des noms plus significatifs, mais je veux juste un peu d’espace pour cela. 

merci

41
yarun can

Git peut prendre le message de validation d'un fichier en utilisant les drapeaux -F ou --file:

git commit -F message.txt

Vous pouvez préparer votre message à l’avance dans un fichier texte et utiliser ce fichier lors de la validation.

Si vous faites cela souvent, il est logique de créer un alias pour cela, par exemple:

done = commit -F message.txt

Pour que vous puissiez simplement taper git done pour qu'il utilise toujours votre fichier texte.

Si vous commettez une erreur et commettez trop rapidement sans mettre à jour le fichier de message, ce n'est pas un problème, vous pouvez simplement faire git commit --amend et corriger le message dans la validation. 

METTRE À JOUR

L'indicateur -e est également utile car il vous permet de modifier le message avant de valider:

git commit -eF message.txt
57
janos

Si vous utilisez l'option --file pour git commit, vous pouvez diriger le message via l'entrée standard en utilisant un tiret (-) au lieu d'un nom de fichier.

echo "Classy commit message" | git commit --file -
17
LopSae

Si vous utilisez VIM comme éditeur principal de Git, lorsque vous exécuterez git commit, VIM sera ouvert et un tampon contenant la sortie commentée de la commande git status vous sera présenté. 

Vous pouvez ensuite utiliser la commande VIM :read COMMIT_MSG.txt qui insérera le contenu du fichier COMMIT_MSG.txt (votre message de validation préparé) à l'emplacement actuel du curseur. 

C'est vraiment juste une alternative à l'exécution de git commit -eF COMMIT_MSG.txt, mais je trouve personnellement plus facile de se souvenir de la commande VIM :read plutôt que de devoir se souvenir d'un autre argument de ligne de commande git. Préférence personnelle, vraiment.

1
sversch

J'ai combiné les réponses de LopSae et janos pour supprimer automatiquement toutes les lignes commençant par un # du fichier input-textfile avec la commande de this post .

Le résultat est cette commande

cat .git/COMMIT_EDITMSG | sed '/^#/ d' | git commit -F -

Et pour le rendre plus court, je suggère d'ajouter un alias.

EDIT Créer un alias pour cette commande était plus complexe qu'exspeced . Mais après quelques essais et avec ce tutoriel j'ai créé un alias qui fonctionne et supporte les paramètres personnalisés.

[alias]
  commitmsg  = "!f() { myarg=${@}; cat .git/COMMIT_EDITMSG | sed '/^#/ d' | git commit -F - $myarg;  }; f"

Vous pouvez l’utiliser par exemple avec paramètre pour la date modifiée comme celle-ci

commitmsg --date "2001-01-02 18:00:00"
0
Radon8472