1049 votes

Comment ajouter un saut de ligne à 'git commit -m' depuis la ligne de commande?

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 ?

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 à éviter vim.

942voto

Simon Richter Points 11471

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- <

70 votes

@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é.

5 votes

Aussi, voir ci-dessous le post de @esse. Un simple retour à la ligne fait l'affaire.

1 votes

Précisément, voir cet article par @esse.

835voto

Simon Points 8717

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.

0 votes

Lorsque vous utilisez gitk, cela s'affiche comme des messages séparés, mais merci ça fonctionne.

114 votes

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!

11 votes

Les messages créés en utilisant cette méthode s'affichent correctement sur GitHub, GitHub pour Windows et TortoiseGit.

442voto

esse Points 2362

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.

11 votes

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).

1 votes

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.

2 votes

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.

135voto

Dennis Williamson Points 105818

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.

0 votes

@rsy: Quelle version de Bash utilisez-vous ? Que voyez-vous lorsque vous faites echo $'one\ntwo' ?

1 votes

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!

0 votes

Pour moi sur Windows 7, c'est la meilleure option. Merci

51voto

Peter Farmer Points 1506

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.com

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.

Powered by:

X