Git traite les lignes commençant par des #
lignes de commentaire lors de la validation. cela est très ennuyeux lorsque vous travaillez avec un système de suivi des tickets et que vous essayez d'écrire le numéro de ticket au début de la ligne, par exemple
#123 salt hashed passwords
git supprimera simplement la ligne du message de validation. existe-t-il un moyen d'échapper au hachage? j'ai essayé \
et !
, mais rien ne fonctionne. les espaces avant #
sont préservés, ils ne sont donc pas non plus une solution de travail au problème.
git config core.commentchar
permet de configurer ce caractère de commentaire. Voir ma réponse cigit commit --cleanup=scissors
sera plus flexible. Voir le détail dans ma réponseRéponses:
Ce comportement fait partie du comportement de
git commit
«nettoyage» par défaut de «. Si vous souhaitez conserver les lignes commençant par,#
vous pouvez utiliser un autre mode de nettoyage.Par exemple
Si vous faites cela, vous devez faire attention à supprimer toutes les
#
lignes que vous ne souhaitez pas voir apparaître dans le commit.la source
commit.template
variable de configuration git.git commit --amend --cleanup=whitespace
Notez que, depuis git1.8.2 (février 2013) , vous pouvez utiliser un caractère différent de '
#
' pour la ligne commentée dans le message de validation.Cela vous permet d'utiliser '
#
' pour votre référence de numéro de bogue.En théorie, vous pourriez mettre un
core.commentChar
mot (plusieurs caractères), mais git 2.0.x / 2.1 sera plus strict (Q3 2014).Voir commit 50b54fd par Nguyễn Thái Ngọc Duy (
pclouds
) :config: soyez strict sur core.commentChar
git 2.0.x / 2.1 (Q3 2014) ajoutera une sélection automatique pour
core.commentChar
:Voir commit 84c9dc2
La liste des personnages candidats pour "auto" est:
Cela signifie qu'une commande comme
git commit -m '#1 fixed issue'
basculera automatiquement le commentChar sur ';
', car '#
' a été utilisé dans le message de validation.la source
$ git config --global core.commentchar ';'
git config --global core.commentChar auto
Les réponses ici sont bonnes et détaillées, mais pour un git noob comme moi, la personnalisation des options de configuration de git n'est pas si évidente. Voici un exemple pour passer de
#
à;
pour les caractères de commentaire:C'est tout ce que vous devez faire.
la source
git commit
pour ouvrir l'éditeur configuré pour modifier un message de validation!git -c core.commentChar="|" commit --amend
(remplacez|
par ce que vous voulez).Vous pouvez utiliser l'option de ligne de commande
-m
:la source
Si vous faites un rebase interactif, alors lorsque vous enregistrez votre message de validation sans rien (car
#
au début, il en a fait un commentaire et donc il a été ignoré) git vous montrera quoi faire:Donc, modifiez simplement le message:
et continuez le rebase:
la source
git commit --cleanup=scissors
Devrait être utilisé. Il est ajouté à Git v2.0.0 le 2014.05.21de
git commit --help
la source
commit.cleanup = whitespace
et de supprimer des# …
commentaires à la main, comme l'a déjà suggéré @CharlesBailey.scissors
-mode nettoie en plus la syntaxe des ciseaux utilisée pargit
format-patch
/mailinfo
/am
; il n'utilise pas la…-- >8 --…
syntaxe lors de l'ajout de commentaires pour valider les messages .# ...
commentaires trop fort. 2. Je ne suis pas sûr de la deuxième partie de votre commentaire, lescissors
mode est définitivement dansgit commit --help
. Quelle version degit
vous utilisez-vous? @ SlippD.Thompsonwhitespace
Le mode offre la suppression de 1. les lignes vides de début et de fin, 2. les espaces de fin, 3. la réduction des lignes vides consécutives.scissors
offre le dépouillement de 1. les lignes vides de début et de fin, 2. les espaces vides de fin, 3. l'effondrement des lignes vides consécutives, 4. tout (y compris) la ligne# -…- >8 -…-
. Cependant, les lignes de ciseaux (# -…- >8 -…-
) ne sont insérées que lorsque vous utilisezgit-format-patch
/mailinfo
/am
. Par conséquent, pour un flux de travail normalgit-commit
/merge
/rebase
/cherry-pick
, lescissors
mode de suppression n'offre aucun avantage par rapport auwhitespace
mode. v2.11.0git commit --cleanup=scissors
DOIT ajouter la# ------------------------ >8 ------------------------
ligne avant l'git status
info. Comme ci-dessous: `# ------------------------> 8 ------------------- ----- # Ne touchez pas la ligne ci-dessus. # Tout ce qui suit sera supprimé. # On branch master # # Initial commit # # Modifications à valider: # nouveau fichier: .gitignore `# ------------------------ >8 ------------------------
avant le statut txt "On dirait que vous pourriez être ..." _ lors de l'utilisationscissors
; cependant, il insère la ligne de ciseaux après le# Conflicts: …
texte. J'avaiscommit.status = false
installé mon.gitconfig
, donc je ne voyais aucun texte d'état, seulement le texte des conflits. Je me suis trompé; changer pour voter.Utilisez un préfixe différent pour le numéro de ticket. Ou ajoutez un mot au numéro du ticket, comme "Bug # 42". Ou ajoutez un seul espace à la ligne; si vous souhaitez supprimer cet espace, vous pouvez ajouter un crochet de validation pour cela.
Personnellement, je préférerais que ce type de manipulation de message de validation ne soit pas effectué par un hook, car cela peut être très irritant lorsqu'il se déclenche lorsque vous ne le souhaitez pas. La solution la plus simple est probablement de repenser le problème.
la source
#xxx
se produire n'importe où dans le message de validation sera lié au problème. Il n'est pas nécessaire que ce soit au début de la validation. Peut-être que c'est quelque chose qui a changé au cours des cinq dernières années?Tous mes engagements commencent par
#issueNumber
donc j'ai mis ce passe-partout à monvim .git/hooks/commit-msg
:Supposons donc que nous ayons une branche
#15
et que nous fassions un message de validationadd new awesome feature
. Avec cette approche, le message final de validation sera#15 add new awesome feature
.la source