Ajouter un saut de ligne à 'git commit-m' à partir de la ligne de commande
j'utilise Git depuis la ligne de commande et j'essaie d'ajouter un saut de ligne au message de propagation (en utilisant git commit -m ""
) sans entrer dans Vim.
est-ce possible?
14 réponses
certainement, la façon dont il est fait dépend de votre coquille. Dans Bash, vous pouvez utiliser des guillemets simples autour du message et pouvez simplement laisser le guillemet ouvert, ce qui fera Bash invite pour une autre ligne, jusqu'à ce que vous fermez le guillemet. Comme ceci:
git commit -m 'Message
goes
here'
alternativement, vous pouvez utiliser un "ici document":
git commit -F- <<EOF
Message
goes
here
EOF
en utilisant Git depuis 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 entrez lorsque vous voulez une nouvelle ligne, le symbole" > "signifie que vous avez appuyé sur entrez , et il y a une nouvelle ligne. D'autres réponses fonctionnent aussi.
si vous voulez juste, disons, une ligne d'en-tête et une ligne de contenu, Vous pouvez utiliser:
git commit -m "My head line" -m "My content line."
vous devriez pouvoir utiliser
git commit -m $'first line\nsecond line'
De la Bash manuel :
les mots du formulaire $ ' chaîne de caractères " sont traités spécialement. Le mot s'étend à string , avec des caractères échappés à l'antislash remplacés comme spécifié par le ANSI C standard.
cela comprend le support pour les nouvelles lignes comme indiqué ci-dessus, plus les hexagones et les hexagones. Codes Unicode et autres. Allez dans la section liée pour voir la liste des caractères échappés.
ajouter des sauts de ligne à votre git commit
essayez ce qui suit pour créer un message de propagation multi-ligne:
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."
alors vérifiez ce que vous avez fait:
git log -1
vous devriez finir avec quelque chose comme ceci:
la capture d'écran est un exemple que j'ai créé en utilisant PowerShell avec Poshgit.
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=
git commit -m"$(echo -e "$message")"
et l'utiliser 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é de la première ligne, puis deux sauts de ligne, puis un message étendu dans le message de propagation, donc faire quelque chose comme ça briserait cette convention. Vous pourriez bien sûr faire:
git commitlb "line1\n\nline2\nline3"
j'espère que ce n'est pas trop loin de la question postée, mais paramétrer l'éditeur par défaut et puis utiliser
git commit -e
pourrait être beaucoup plus confortable.
j'utilise zsh sur un Mac, et je peux poster des messages de propagation multi-lignes entre guillemets ("). Fondamentalement, je continue à taper et à appuyer sur Retour pour de nouvelles lignes, mais le message n'est pas envoyé à Git jusqu'à ce que je ferme les guillemets et retourner.
à Partir de Git documentation :
- m
-- message= < msg>
Utilisezcomme message de propagation. Si plusieurs options -m
sont données, leurs valeurs sont concaténées en paragraphes séparés.
donc, si vous cherchez à regrouper plusieurs messages de propagation, cela devrait faire l'affaire:
git commit -m "commit message1" -m "commit message2"
si vous utilisez Bash, appuyez sur C-x C-e
( Ctrl + x Ctrl + e ), et il ouvrira la commande courante 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'
vous pouvez utiliser git commit -m "$(echo)"
ou git commit -m $'\n'
personnellement, je trouve qu'il est plus facile de modifier les messages de propagation après le fait dans vi
(ou quelque soit votre éditeur git de choix) plutôt que sur la ligne de commande, en faisant git commit --amend
juste après git commit
.
il n'y a pas besoin de compliquer les choses. Après le -m "text...
la ligne suivante est obtenue en appuyant sur entrer . Quand entre apparaît >
. Lorsque vous avez terminé, il suffit de mettre "
et appuyez sur entrer :
$ git commit -m "Another way of demonstrating multicommit msg
>
> 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 ...
Voici une liste de failing solutions sur Windows avec cmd standard.shell exe (pour vous épargner un temps d'essai et d'erreur!):
-
git commit -m 'Hello
Entrez ne fonctionne pas: il ne demande pas une nouvelle ligne -
git commit -m "Hello
entrer idem -
git commit -m "Hello^
Entrer idem -
git commit -m 'Hello^
entrerWorld'
ressemble à travailler parce qu'il demande "plus?" et permet d'écrire une nouvelle ligne, mais finalement, quand on faitgit log
, vous verrez que c'est toujours une ligne de message...
TL;DR: même si sur Windows, commandline parsing fonctionne différemment , et ^
permet l'entrée multiligne, cela n'aide pas ici.
enfin git commit -e
est probablement la meilleure option.