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?

556
demandé sur Peter Mortensen 2011-02-21 13:02:42

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
486
répondu Simon Richter 2017-12-20 22:24:21

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.

357
répondu esse 2017-12-20 22:30:48

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."
349
répondu Simon 2011-02-21 19:46:44

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.

83
répondu Dennis Williamson 2017-03-30 19:44:04

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:

Multi-line Git commit message in PowerShell

la capture d'écran est un exemple que j'ai créé en utilisant PowerShell avec Poshgit.

79
répondu Jon Crowell 2017-12-20 22:32:39

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"
37
répondu Peter Farmer 2017-12-20 22:28:39

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.

24
répondu Tobse 2017-12-22 06:21:14

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.

18
répondu Abizern 2017-12-20 22:27:18

à Partir de Git documentation :

- m

-- message= < msg>

Utilisez comme 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"
18
répondu Saravanan M 2017-12-20 23:02:53

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'
6
répondu Aleks-Daniel Jakimenko-A. 2017-12-20 22:59:47

vous pouvez utiliser git commit -m "$(echo)" ou git commit -m $'\n'

5
répondu Eugene Yarmash 2011-02-21 12:52:15

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 .

4
répondu amphibient 2015-08-14 22:09:16

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 ...
4
répondu blongho 2017-12-20 23:01:30

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^ entrer World' ressemble à travailler parce qu'il demande "plus?" et permet d'écrire une nouvelle ligne, mais finalement, quand on fait git 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.

0
répondu Basj 2018-06-29 10:30:07