Git: afficher le diff de l'index dans le message de validation en tant que commentaire
Lorsque git commit
ouvre, l'éditeur de messages affiche un État bref, 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 <file>..." 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 ce peut être un long diff, mais quand même.. donc utiles.
5 réponses
L'indicateur --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 l'ai juste essayé et les lignes de diff dans le message de validation ne sont pas explicitement commentées. Cependant, ils n'apparaissent 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 <file>..." 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 l'absence de #
précédant la diff lignes)
Puis le message de validation réel:
$ git log -n 1
commit ad21a2655ef6d8173c2df08dc9893055b26bc068
Author: Tom Jakubowski <tom@crystae.net>
Date: Thu Oct 27 19:12:54 2011 -0700
Feeling a bit pessimistic now.
Évidemment, {[4] } montrera toujours le diff, mais c'est parce qu'il le fait toujours 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 ajouter plus d'informations (comme le fait l'option stat).
Modifier: 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 validez, vous pouvez ajouter 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'ajouter cette section à votre fichier git config
:
[commit]
verbose = true
Vous devrez peut-être configurer votre éditeur pour qu'il s'affiche réellement en mode diff (pour la coloration syntaxique). J'utilise Notepad2 comme 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