Добавьте разрыв строки в 'git commit -m' из командной строки

Я использую Git из командной строки и пытаюсь добавить разрыв строки в сообщение коммита (используя git commit -m ""), не заходя в Vim.

Это возможно?

Ответ 1

Конечно, как это сделать, зависит от вашей оболочки. В Bash вы можете использовать одинарные кавычки вокруг сообщения и просто оставлять цитату открытой, что заставит Bash запросить другую строку, пока вы не закроете цитату. Как это:

git commit -m 'Message

goes
here'

В качестве альтернативы вы можете использовать "здесь документ" (также известный как heredoc):

git commit -F- <<EOF
Message

goes
here
EOF

Ответ 2

Если вы просто хотите, скажем, строку заголовка и строку содержимого, вы можете использовать:

git commit -m "My head line" -m "My content line."

Ответ 3

Используя Git из командной строки с Bash, вы можете сделать следующее:

git commit -m "this is
> a line
> with new lines
> maybe"

Просто введите и нажмите Enter, если вы хотите новую строку, символ ">" означает, что вы нажали Enter, и появилась новая строка. Другие ответы работают также.

Ответ 4

Вы должны иметь возможность использовать

git commit -m $'first line\nsecond line'

В Bash manual:

Слова формы $'string' обрабатываются специально. Слово расширяется до строка с замененными символами с обратной косой чертой, как указано в Стандарт ANSI C.

Это включает поддержку новых строк, как показано выше, плюс шестнадцатеричный код и коды Unicode и другие. Перейдите в связанный раздел, чтобы просмотреть список символов с обратным слэшем.

Ответ 5

Добавление разрывов строк в ваш коммит Git

Попробуйте сделать следующее, чтобы создать многострочное сообщение о коммите:

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

Затем проверьте, что вы сделали:

git log -1

У вас должно получиться что-то вроде этого:

Multi-line Git commit message in PowerShell

Снимок экрана взят из примера, который я настроил с помощью PowerShell с Poshgit.

Ответ 6

Делать что-то вроде

git commit -m"test\ntest"

не работает, но что-то вроде

git commit -m"$(echo -e "test\ntest")"

работает, но не очень красиво. Вы установили команду git-commitlb в вашем PATH, которая делает что-то вроде этого:

#!/bin/bash

message=$1

git commit -m"$(echo -e "$message")"

И используйте это так:

git commitlb "line1\nline2\nline3"

Слово предупреждения, у меня такое ощущение, что общее соглашение состоит в том, чтобы в качестве первой строки в качестве строки с краткой записью использовались две строки, а затем в сообщении коммита добавлялось расширенное сообщение. условность. Конечно, вы могли бы сделать:

git commitlb "line1\n\nline2\nline3"

Ответ 8

Из документации Git:

-m & lt; msg & gt;
- -m essage = & л; тзд & GT;
Используйте указанный & lt; msg & gt; как сообщение о коммите. Если задано несколько опций -m, их значения объединяются в отдельные абзацы.

Итак, если вы ищете группирование нескольких сообщений коммита, это должно сработать:

git commit -m "commit message1" -m "commit message2"

Ответ 9

Нет необходимости усложнять вещи. После -m "text... следующая строка получается нажатием Enter. При нажатии Enter появляется >. Когда вы закончите, просто поместите " и нажмите Enter:

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

Ответ 10

Я использую zsh на Mac и могу публиковать многострочные сообщения в двойных кавычках ("). По сути, я продолжаю набирать и нажимать клавишу возврата для новых строк, но сообщение не отправляется в Git, пока я не закрою кавычки и не вернусь ,

Ответ 11

В Bash/Zsh вы можете просто использовать разрывы строк в кавычках:

git commit -m 'Multi-line
commit
message'

Цитирование ANSI-C также работает в Bash/Zsh:

git commit -m $'Multi-line\ncommit\nmessage'

Вы также можете указать Git использовать редактор по вашему выбору для редактирования сообщения коммита. Из документов git-commit:

Редактор, используемый для редактирования сообщения журнала фиксации, будет выбран из Переменная среды GIT_EDITOR, конфигурация core.editor переменная, переменная окружения VISUAL или EDITOR переменная окружения (в таком порядке). Смотрите git-var для подробностей.

Ответ 12

Если вы используете Bash, нажмите C-x C-e (Ctrl + x Ctrl + e), и он откроет текущую команду в выбранном вами редакторе.

Вы можете изменить предпочтительный редактор, настроив VISUAL и EDITOR.

Это то, что у меня есть в .bashrc:

export ALTERNATE_EDITOR=''
export EDITOR='emacsclient -t'
export VISUAL='emacsclient -c'
export SUDO_EDITOR='emacsclient -t'

Ответ 13

Лично мне легче всего модифицировать сообщения фиксации после факта в vi (или независимо от вашего выбора в редакторе git), а не в командной строке, выполнив git commit --amend сразу после git commit.

Ответ 14

Вот список неудачных решений в Windows со стандартной оболочкой cmd.exe (чтобы сэкономить время проб и ошибок!):

  • git commit -m 'Hello Enter не работает: не будет запрашивать новую строку

  • git commit -m "Hello Enter То же самое

  • git commit -m "Hello^ Enter То же самое

  • git commit -m 'Hello^ Enter World' выглядит как работающий, потому что спрашивает "Еще?" и позволяет написать новую строку, но, наконец, при выполнении git log вы увидите, что это все еще однострочное сообщение...

TL; DR. Даже если в Windows синтаксический анализ командной строки работает по-другому, а ^ допускает многострочный ввод, здесь это не поможет.

Наконец, git commit -e, вероятно, лучший вариант.

Ответ 15

К сожалению, git, похоже, не учитывает символ новой строки в своем сообщении. Выше уже есть несколько разумных решений, но при написании сценариев это раздражает. Здесь также работают документы, но они могут быть слишком раздражающими (например, файлы yaml)

Вот что я сделал:

git commit \
    --message "Subject" \
    --message "First line$(echo)Second line$(echo)Third Line"

Несмотря на то, что это все еще безобразно, оно допускает использование "однострочников", что может быть полезным. Поскольку обычно строки являются переменными или объединяются с переменными, углины могут быть сведены к минимуму.