Je suis en train d'utiliser Git en ligne de commande et j'essaie d'ajouter un saut de ligne au message de commit (en utilisant git commit -m ""
) sans passer par Vim.
Est-ce possible ?
Je suis en train d'utiliser Git en ligne de commande et j'essaie d'ajouter un saut de ligne au message de commit (en utilisant git commit -m ""
) sans passer par Vim.
Est-ce possible ?
Bien sûr, comment c'est fait dépend de votre shell. En Bash, vous pouvez utiliser des guillemets simples autour du message et vous pouvez laisser le guillemet ouvert, ce qui amènera Bash à demander une autre ligne, jusqu'à ce que vous fermiez le guillemet. Comme ceci :
git commit -m 'Message
va
ici'
Alternativement, vous pouvez utiliser un "document ici" (également connu sous le nom de heredoc) :
git commit -F- <
@La réponse de Peter Farmer mentionne ensuite que la convention Git est apparemment quelque chose comme : 1 ligne pour le résumé, deux sauts de ligne, puis un message détaillé.
Si vous voulez simplement, disons, une ligne d'en-tête et une ligne de contenu, vous pouvez utiliser :
git commit -m "Mon en-tête" -m "Ma ligne de contenu."
Notez que cela crée des paragraphes séparés - pas des lignes. Il y aura donc une ligne vide entre chaque deux lignes -m
, par exemple :
Mon en-tête
Ma ligne de contenu.
Lorsque vous utilisez gitk
, cela s'affiche comme des messages séparés, mais merci ça fonctionne.
Cela offre l'avantage de fonctionner sur Windows où les astuces de citation mentionnées ailleurs ne fonctionnent pas. Séparez -m
pour chaque ligne. Bien!
Les messages créés en utilisant cette méthode s'affichent correctement sur GitHub, GitHub pour Windows et TortoiseGit.
En utilisant Git à partir de la ligne de commande avec Bash, vous pouvez faire ce qui suit :
git commit -m "this is
> a line
> with new lines
> maybe"
Tapez simplement et appuyez sur Entrée lorsque vous souhaitez une nouvelle ligne, le symbole ">" signifie que vous avez appuyé sur Entrée, et il y a une nouvelle ligne. D'autres réponses fonctionnent également.
La réponse d'Abizern m'a clarifié pourquoi cela fonctionne - le shell Bash interprète une pression sur la touche Entrée comme une nouvelle ligne jusqu'à ce que le premier guillemet double soit "fermé" (avec un guillemet double ultérieur).
Je dois admettre que c'est une solution beaucoup plus efficace, plus facile et plus pratique que la réponse acceptée. Cela fonctionne bien pour moi en utilisant Git 1.8.2.1. +1 de ma part.
Ce n'est pas une fonction particulière de la touche Entrée, mais plutôt liée aux guillemets. Que vous utilisiez des guillemets doubles ou simples n'a pas vraiment d'importance, sauf pour l'expansion de variables et l'échappement des caractères spéciaux - c'est pourquoi j'ai choisi des guillemets simples dans ma réponse.
Vous devriez être capable d'utiliser
git commit -m $'première ligne\ndeuxième ligne'
D'après le manuel Bash:
Les mots de forme $'chaîne' sont traités spécialement. Le mot se développe en chaîne, avec les caractères échappés par l'antislash remplacés comme spécifié par le standard ANSI C.
Cela inclut le support des sauts de ligne comme indiqué ci-dessus, ainsi que des codes hexadécimaux, Unicode et d'autres. Consultez la section liée pour voir une liste des caractères échappés par l'antislash.
@rsy: Quelle version de Bash utilisez-vous ? Que voyez-vous lorsque vous faites echo $'one\ntwo'
?
Rsy$ bash --version GNU bash, version 3.2.53(1)-release (x86_64-apple-darwin13) Copyright (C) 2007 Free Software Foundation, Inc. La sortie de cette commande est, comme prévu, affichée sur deux lignes différentes!
En train de faire quelque chose comme
git commit -m"test\ntest"
ne fonctionne pas, mais quelque chose comme
git commit -m"$(echo -e "test\ntest")"
fonctionne, mais ce n'est pas très joli. Vous avez mis en place une commande git-commitlb
dans votre PATH
qui fait quelque chose comme ceci :
#!/bin/bash
message=$1
git commit -m"$(echo -e "$message")"
Et l'utilisez comme ceci :
git commitlb "ligne1\nligne2\nligne3"
Un mot d'avertissement, j'ai le sentiment que la convention générale est d'avoir une ligne de résumé comme première ligne, puis deux sauts de ligne, suivi d'un message étendu dans le message de commit, donc faire quelque chose comme ceci violerait cette convention. Vous pourriez bien sûr faire :
git commitlb "ligne1\n\nligne2\nligne3"
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
11 votes
Comme note, voici un lien qui résume les bonnes conventions pour les messages de commit - github.com/erlang/otp/wiki/Writing-good-commit-messages si cela peut aider quelqu'un.
8 votes
Quelque chose comme
GIT_EDITOR="emacs" git commit -m 'paragraphe1' -m 'paragraphe2' -e
vous aiderait à évitervim
.