Добавьте разрыв строки в 'git commit -m' из командной строки - PullRequest
647 голосов
/ 21 февраля 2011

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

Возможно ли это?

Ответы [ 15 ]

7 голосов
/ 21 февраля 2011

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

6 голосов
/ 27 августа 2016

Если вы используете 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'
5 голосов
/ 15 августа 2015

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

1 голос
/ 31 марта 2019

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

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

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

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

1 голос
/ 29 июня 2018

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

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

  • git commit -m "Hello Ввод То же

  • git commit -m "Hello^ Ввод То же

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

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

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

...