J'utilise Git depuis la ligne de commande et j'essaie d'ajouter un saut de ligne au message de validation (en utilisant git commit -m ""
) sans accéder à Vim.
Est-ce possible?
J'utilise Git depuis la ligne de commande et j'essaie d'ajouter un saut de ligne au message de validation (en utilisant git commit -m ""
) sans accéder à Vim.
Est-ce possible?
Certes, la façon dont cela se fait dépend de votre shell. Dans Bash, vous pouvez utiliser des guillemets simples autour du message et simplement laisser le devis ouvert, ce qui incitera Bash à entrer une autre ligne jusqu'à ce que vous fermiez le devis. Comme ça:
git commit -m 'Message
goes
here'
Alternativement, vous pouvez utiliser un « document ici » (également appelé hérédoc) :
git commit -F- <<EOF
Message
goes
here
EOF
git commit -m "Hello^
‹Entrée› World"
ne fonctionne toujours pas. L'entrée sera donnée sur 2 lignes, mais en faisant git log
, vous ne verrez qu'une seule ligne.
- person Basj; 29.06.2018
-
après -F
?
- person Porcupine; 20.09.2018
git
peut lire le texte du message depuis stdin, et l'option -F
donne le nom du fichier à partir duquel lire le message.
- person Simon Richter; 21.09.2018
echo "line a
[return] line b"
[return] avant de l'utiliser dans un git commit
.
- person Andreas Linnert; 11.10.2018
-F -
avec un espace entre les deux fonctionne également, n'est-ce pas ?
- person Enlico; 29.01.2020
Si vous voulez juste, disons, un titre et une ligne de contenu, vous pouvez utiliser :
git commit -m "My head line" -m "My content line."
Notez que cela crée des paragraphes séparés, pas des lignes. Il y aura donc une ligne vide entre deux -m
lignes, par exemple :
My head line
My content line.
gitk
, cela s'affiche sous forme de messages séparés, mais merci, cela fonctionne.
- person Alan Whitelaw; 21.02.2011
-m
pour chaque ligne. Bon!
- person ddotsenko; 18.04.2012
man git commit
: -m ‹msg›, --message=‹msg› Utilisez le ‹msg› donné comme message de validation. Si plusieurs options -m sont données, leurs valeurs sont concaténées sous forme de paragraphes séparés.
- person Amedee Van Gasse; 18.06.2015
-m ""
(les guillemets sont obligatoires)
- person CodeManX; 20.08.2015
-m
.
- person Ohad Schneider; 26.04.2016
git commit --amend -m "My head line, updated" -m "My content line, updated."
+1
- person Gary Sheppard; 12.06.2017
En utilisant Git depuis la ligne de commande avec Bash, vous pouvez effectuer les opérations suivantes :
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 qu'il y a une nouvelle ligne. D'autres réponses fonctionnent également.
zsh
pour moi !
- person ernestkamara; 29.08.2018
git
se comporte correctement -- il attend juste que je termine la chaîne. Logique. La seule chose que je remarque, c'est qu'une fois que j'appuie sur Enter
et que je suis sur la ligne suivante, je ne peux pas revenir à la ligne ci-dessus et la modifier. Je dois utiliser Ctrl+C
pour effacer le message et recommencer (ou copier le msg, le modifier en dehors de git et le coller). Mais c'est toujours une excellente réponse. Merci!
- person Chris22; 10.09.2019
Ajout de sauts de ligne à votre commit Git
Essayez ce qui suit pour créer un message de validation sur plusieurs lignes :
git commit -m "Demonstrate multi-line commit message in Powershell" -m "Add a title to your commit after -m enclosed in quotes,
then add the body of your comment after a second -m.
Press ENTER before closing the quotes to add a line break.
Repeat as needed.
Then close the quotes and hit ENTER twice to apply the commit."
Vérifiez ensuite ce que vous avez fait :
git log -1
Vous devriez vous retrouver avec quelque chose comme ceci :
La capture d'écran provient d'un exemple que j'ai configuré en utilisant PowerShell avec Poshgit.
Cela fonctionne dans tous les terminaux et systèmes d'exploitation AFAIK.
Voici un exemple avec bash :
Résultat de ce commit :
Vous devriez pouvoir utiliser
git commit -m $'first line\nsecond line'
Extrait du manuel de Bash :
Les mots de la forme $'string' sont traités spécialement. Le mot se développe en chaîne, avec les caractères d'échappement avec barre oblique inverse remplacés comme spécifié par la norme ANSI C.
Cela inclut la prise en charge des nouvelles lignes comme indiqué ci-dessus, ainsi que des codes hexadécimaux et Unicode et autres. Accédez à la section liée pour voir une liste des caractères échappés avec une barre oblique inverse.
echo $'one\ntwo'
?
- person Dennis Williamson; 02.06.2015
git commit -m "first line"$'\n'"second line"
. Notez simplement que vous devez fermer la chaîne précédente avant de démarrer votre $'string'
.
- person PlasmaBinturong; 30.01.2019
MSG="first line\nsecond line"
dans une variable ? … -m $'$MSG'
ne fonctionnera pas.
- person white_gecko; 09.11.2020
Depuis la documentation Git :
-m ‹msg›
--message=‹msg›
Utilisez le ‹msg› donné comme message de validation. Si plusieurs options-m
sont données, leurs valeurs sont concaténées sous forme de paragraphes distincts.
Donc, si vous cherchez à regrouper plusieurs messages de validation, cela devrait faire l'affaire :
git commit -m "commit message1" -m "commit message2"
Faire quelque chose comme
git commit -m"test\ntest"
ça ne marche pas, mais quelque chose comme
git commit -m"$(echo -e "test\ntest")"
ça marche, mais ce n'est pas très joli. Vous configurez une commande git-commitlb
dans votre PATH
qui fait quelque chose comme ceci :
#!/bin/bash
message=$1
git commit -m"$(echo -e "$message")"
Et utilisez-le comme ceci :
git commitlb "line1\nline2\nline3"
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, puis un message étendu dans le message de validation, donc faire quelque chose comme ceci violerait cette convention. Vous pourriez bien sûr faire :
git commitlb "line1\n\nline2\nline3"
J'espère que cela ne nous éloigne pas trop de la question publiée, mais définir l'éditeur par défaut puis utiliser
git commit -e
pourrait être beaucoup plus confortable.
-e
et cela ouvrira toujours l'éditeur
- person djangonaut; 31.08.2018
Il n’est pas nécessaire de compliquer les choses. Après le -m "text...
, la ligne suivante est obtenue en appuyant sur Entrée. Lorsque Entrée est enfoncé, >
apparaît. Lorsque vous avez terminé, mettez simplement "
et appuyez sur Entrée :
$ git commit -m "Another way of demonstrating multicommit messages:
>
> This is a new line written
> This is another new line written
> This one is really awesome too and we can continue doing so till ..."
$ git log -1
commit 5474e383f2eda610be6211d8697ed1503400ee42 (HEAD -> test2)
Author: ************** <*********@gmail.com>
Date: Mon Oct 9 13:30:26 2017 +0200
Another way of demonstrating multicommit messages:
This is a new line written
This is another new line written
This one is really awesome too and we can continue doing so till ...
[EDIT 05-05-2021]
Pour les utilisateurs Windows, utilisez GitBash pour Windows. Le Windows cmd
intégré ne fonctionne pas avec cette méthode.
Dans Bash/Zsh, vous pouvez simplement utiliser des sauts de ligne littéraux entre guillemets :
git commit -m 'Multi-line
commit
message'
Les Citation ANSI-C fonctionnent également dans Bash/Zsh :
git commit -m $'Multi-line\ncommit\nmessage'
Vous pouvez également demander à Git d'utiliser un éditeur de votre choix pour modifier le message de validation. À partir de la documentation sur git-commit :
L'éditeur utilisé pour modifier le message du journal de validation sera choisi parmi la variable d'environnement
GIT_EDITOR
, la variable de configurationcore.editor
, la variable d'environnementVISUAL
ou la variable d'environnementEDITOR
(dans cet ordre). Voir git-var pour plus de détails.
Ainsi, pour éditer votre message en utilisant nano
, par exemple, vous pouvez exécuter :
export GIT_EDITOR=nano
git commit
J'utilise zsh sur un Mac et je peux publier des messages de validation multilignes entre guillemets doubles ("). En gros, je continue de taper et d'appuyer sur Entrée pour les nouvelles lignes, mais le message n'est pas envoyé à Git tant que je n'ai pas fermé les guillemets et retourné .
Si vous utilisez Bash, appuyez sur C-x C-e
(Ctrl+x Ctrl+e), et cela ouvrira le commande actuelle dans votre éditeur préféré.
Vous pouvez changer l'éditeur préféré en modifiant VISUAL
et EDITOR
.
C'est ce que j'ai dans mon .bashrc
:
export ALTERNATE_EDITOR=''
export EDITOR='emacsclient -t'
export VISUAL='emacsclient -c'
export SUDO_EDITOR='emacsclient -t'
Voici une liste des solutions échouées sous Windows avec le shell cmd.exe standard (pour vous faire gagner du temps d'essais et d'erreurs !) :
git commit -m 'Hello
Entrée ne fonctionne pas : il ne demandera pas de nouvelle ligne
git commit -m "Hello
Entrer idem
git commit -m "Hello^
Entrer idem
git commit -m 'Hello^
Entrée World'
semble fonctionner car il demande "Plus ?" et permet d'écrire une nouvelle ligne, mais finalement en faisant git log
vous verrez que c'est toujours une seule ligne message...
TL;DR : Même sous Windows, l'analyse en ligne de commande fonctionne différemment, et ^
autorise la saisie multiligne, cela n'aide pas ici.
Enfin, git commit -e
est probablement la meilleure option.
Personnellement, je trouve plus facile de modifier les messages de validation après coup dans vi
(ou quel que soit l'éditeur git de votre choix) plutôt que sur la ligne de commande, en faisant git commit --amend
juste après git commit
.
git commit -e
.
- person Nathan Hinchey; 16.11.2016
git commit
, et cela ouvrira un éditeur avec un modèle de message de validation.
- person Jim Stewart; 09.08.2017
Je ne vois personne mentionner que si vous ne fournissez pas de message, cela ouvrira nano pour vous (au moins sous Linux) où vous pourrez écrire plusieurs lignes...
Seulement ceci est nécessaire :
git commit
Malheureusement, git ne semble autoriser aucun caractère de nouvelle ligne dans son message. Il existe déjà plusieurs solutions raisonnables ci-dessus, mais lors de la création de scripts, celles-ci sont ennuyeuses. Ici, les documents fonctionnent également, mais peuvent aussi être un peu trop ennuyeux à gérer (pensez aux fichiers yaml)
Voici ce que j'ai fait:
git commit \
--message "Subject" \
--message "First line$(echo)Second line$(echo)Third Line"
Même si cela reste également moche, cela permet des « one-liners » qui peuvent encore être utiles. Comme les chaînes sont généralement des variables ou combinées avec des variables, les laideurs peuvent être réduites au minimum.
OMI, la ligne de message de validation initiale est censée être trop courte, précise au lieu d'un paragraphe. Donc utiliser git commit -m "<short_message>"
suffira
Après cela, afin de développer le message de validation initial, nous pouvons utiliser
git commit --amend
qui ouvrira le vim et nous pourrons ensuite entrer l'explication du message de validation qui, à mon avis, est plus facile que la ligne de commande.
GIT_EDITOR="emacs" git commit -m 'paragraph1' -m 'paragraph2' -e
vous aiderait à évitervim
. - person jotik   schedule 05.05.2016