git: affiche l’index diff dans le message de validation comme commentaire

Lorsque git commit ouvre l’éditeur de message affiche un bref état, quelque chose comme ceci:

 # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch master # Your branch is ahead of 'origin/master' by 26 commits. # # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # modified: Showcase/src/com/gigantt/BorderArea.mxml # modified: Showcase/src/com/gigantt/Client.mxml # modified: Showcase/src/com/gigantt/GraphItem.mxml # 

Comment puis-je modifier git pour montrer aussi le diff à commettre? Je suis conscient que cela peut être une longue diff, mais quand même .. si utile.

Le --verbose (ou -v ) pour git commit affichera le diff de ce qui serait commis:

git commit --verbose

Pas assez de réputation pour poster une réponse à la réponse d’Alan, mais pour Idan et n’importe qui d’autre, je viens juste de l’essayer et les lignes de diff dans le message de validation ne sont pas explicitement commentées. Cependant, ils ne figurent toujours pas dans le message de validation final, Dieu merci.

$ git commit --verbose

Dans mon éditeur:

 Feeling a bit pessimistic now. # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch master # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # modified: README # diff --git a/README b/README index af5626b..c62237e 100644 --- a/README +++ b/README @@ -1 +1 @@ -Hello, world! +Goodbye, world! 

(notez le manque de # précédant les lignes de diff)

Et puis le message de validation actuel:

 $ git log -n 1 commit ad21a2655ef6d8173c2df08dc9893055b26bc068 Author: Tom Jakubowski  Date: Thu Oct 27 19:12:54 2011 -0700 Feeling a bit pessimistic now. 

Evidemment, git show montrera quand même le diff, mais c’est toujours le cas pour les commits. 🙂

J’ai mis les lignes suivantes dans .git / hooks / prepare-commit-msg pour obtenir un diff commenté:

 #!/bin/bash if [ "$2" == "" ] ; then git diff --staged -p --stat 2> /dev/null | awk '{ printf "#"; print}' >> "$1" 2>/dev/null fi 

De cette façon, vous pouvez non seulement commenter le diff, mais aussi append plus d’informations (comme le fait l’option stat ).

Edit: Aussi git commit –verbose n’inclut pas le diff au message de validation de cette façon ferait sans les #s.

Si vous voulez toujours voir le diff lorsque vous le validez, vous pouvez append ce qui suit à votre fichier ~/.gitconfig :

 [alias] commit = commit -v 

Le moyen le plus simple de s’assurer que ce comportement est toujours présent est d’append cette section à votre fichier de git config :

 [commit] verbose = true 

Vous devrez peut-être configurer votre éditeur pour l’afficher en mode diff (pour la coloration syntaxique). J’utilise Notepad2 en tant que remplacement du Bloc-notes Windows, et -s diff définit le schéma de couleurs de manière appropriée (rouge pour les lignes supprimées, etc.):

 [core] editor = C:/Windows/system32/notepad.exe -s diff