Конечно, как это сделать, зависит от вашей оболочки. В Bash вы можете использовать одинарные кавычки вокруг сообщения и просто оставлять цитату открытой, что заставит Bash запросить другую строку, пока вы не закроете цитату. Нравится:
git commit -m 'Message
goes
here'
Кроме того, вы можете использовать «здесь документ» (также известный как heredoc):
В ответе Питера Фармера позже упоминается, что соглашение Git выглядит примерно так: 1 строка для резюме, два переноса строки, затем подробное сообщение.
Ник Спейсек
4
Также см. Ниже пост от @esse. Простой возврат каретки делает свое дело.
Хакан Энсари
6
@MohamadAli, в Windows парсинг командной строки работает иначе
Саймон Рихтер
2
@KelvinShadewing, да, но с той разницей, что правила замены оболочки применяются к сообщению, поэтому вам нужно избегать знаков доллара и других метасимволов. С другой стороны, это позволяет вам использовать переменные.
Саймон Рихтер
2
@Nikhil, многие программы поддерживают одну черту в качестве имени файла, означающего стандартный ввод или стандартный вывод. С здесь документом , то gitкоманда может читать текст сообщения из стандартного ввода, а -Fпараметр задает имя файла , чтобы прочитать сообщение от.
Саймон Рихтер
515
Если вы просто хотите, скажем, заголовок и строку содержимого, вы можете использовать:
git commit -m "My head line"-m "My content line."
Обратите внимание, что это создает отдельные абзацы, а не строки. Таким образом, между каждыми двумя -mстроками будет пустая строка , например:
Это дает преимущество работы в Windows, где приемы цитирования, упомянутые в другом месте, не работают. Отдельно -mдля каждой строки. Ницца!
ддоценко
8
Сообщения, созданные с помощью этого метода, правильно отображаются в GitHub, GitHub для Windows и TortoiseGit.
Ричард
12
@ddotsenko это преимущество работы на Linux / Mac, где у нас есть приличная оболочка =)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
7
From man git commit: -m <msg>, --message = <msg> Использовать данное <msg> в качестве сообщения фиксации. Если задано несколько параметров -m, их значения объединяются в отдельные абзацы.
Амеди Ван Гасс
55
Обратите внимание, что это создает отдельные абзацы, а не строки. Таким образом, между каждыми двумя -mстроками будет пустая строка .
Охад Шнайдер
398
Используя Git из командной строки с Bash, вы можете сделать следующее:
git commit -m "this is
> a line
> with new lines
> maybe"
Просто введите и нажмите, Enterкогда вы хотите новую строку, символ «>» означает, что вы нажали Enter, и есть новая строка. Другие ответы работают также.
Ответ Абизерна объяснил мне, почему это работает - оболочка Bash интерпретирует нажатие клавиши <kbd> Enter </ kbd> как новую строку, пока первый символ двойной кавычки не будет «закрыт» (с последующим символом двойной кавычки).
Кенни Эвитт
1
Я должен согласиться, что это гораздо более эффективное, простое и практичное решение, чем принятый ответ. Это хорошо работает для меня, используя Git 1.8.2.1. +1 от меня.
crmpicco
Это не специальная функция клавиши Enter , а скорее связанная с кавычками. Неважно, используете ли вы двойные или одинарные кавычки, за исключением раскрытия переменных и экранирования специальных символов - поэтому в своем ответе я выбрал одинарные кавычки.
Саймон Рихтер
2
Не используйте это в Zsh! Терминал закроется, и вы потеряете то, что набрали.
Слова вида $ ' string ' обрабатываются специально. Слово расширяется до
строки , символы с обратной косой чертой заменяются в соответствии со стандартом ANSI C.
Это включает в себя поддержку новых строк, как показано выше, а также шестнадцатеричные и юникод-коды и другие. Перейдите в связанный раздел, чтобы увидеть список символов с обратной косой чертой.
Приостановлено до дальнейшего уведомления. источник
@rsy: Какую версию Bash вы используете? Что вы видите, когда делаете echo $'one\ntwo'?
Приостановлено до дальнейшего уведомления.
1
rsy $ bash - версия GNU bash, версия 3.2.53 (1) -релиз (x86_64-apple-darwin13) Copyright (C) 2007 Free Software Foundation, Inc. Вывод этой команды, как и ожидалось, показан в двух разных линия!
ccoutinho
для меня на windows 7 это лучший вариант Спасибо
Мохамад Али
2
Здесь ключ $, и я не заметил этого с первого взгляда. В противном случае я просто получаю \ n в середине моего сообщения.
ChrisBob
1
Вам даже не нужно использовать $ '...' для всей строки; используя это как раз вокруг символа новой строки будет работать: git commit -m "first line"$'\n'"second line". Просто отметьте, что вы должны закрыть предыдущую строку перед началом $'string'.
PlasmaBinturong
95
Добавление разрывов строк в ваш коммит 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
Вы должны получить что-то вроде этого:
Снимок экрана взят из примера, который я настроил с помощью PowerShell с Poshgit.
Потрясающий ответ. Я искал это целую вечность и пробовал множество различных способов форматировать мои сообщения Git commit, но это работает лучше всего. Я могу подтвердить, что он работает в командной строке с Git 1.8.2.1.
crmpicco
1
В Powershell вы можете сделать `n для разрыва строки
Ecropolis
2
Это отлично сработало для меня в Git Bash для Windows .
Улисс Алвес
1
Это должен быть выбранный ответ, так как это наиболее совместимый метод, он не зависит от какой-либо конкретной подсказки CLI, как это делают некоторые другие предложения ..
1
Это лучший ответ и должен быть выбран в качестве ответа. Это не только соответствует стандартному поведению и обеспечивает более четкое сообщение о коммите, но также является несколько более гибким с несколькими ключами -m. Кроме того, несмотря на то, что он выглядит специфично для Windows и привлекает комментарии, связанные с Windows, он отлично работает и в Linux.
0xc0de
44
Делать что-то вроде
git commit -m"test\ntest"
не работает, но что-то вроде
git commit -m"$(echo -e "test\ntest")"
работает, но это не очень красиво. Вы устанавливаете git-commitlbкоманду в вашем, PATHкоторая делает что-то вроде этого:
Слово предупреждения, у меня такое ощущение, что общее соглашение состоит в том, чтобы в качестве первой строки была указана итоговая строка, а затем два переноса строки, а затем расширенное сообщение в сообщении фиксации, поэтому выполнение чего-то подобного нарушило бы это соглашение. Конечно, вы можете сделать:
-m <msg>
--message = <msg>
Использовать указанное <msg> в качестве сообщения фиксации. Если несколько-m параметров, их значения объединяются в отдельные абзацы.
Итак, если вы ищете для группировки несколько сообщений коммитов, это должно сделать работу:
Вы можете оставить его, -eи он все равно откроет редактор
djangonaut
Это был ответ, который я искал.
Тинмарино
28
Нет необходимости усложнять вещи. После получения -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:MonOct913:30:262017+0200Another 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 ...
Это отличный ответ, новые строки отображаются правильно на Github. Первая строка отображается как заголовок.
Йогеш Умеш Ваиты
18
Я использую zsh на Mac и могу публиковать многострочные сообщения в двойных кавычках ("). По сути, я продолжаю набирать и нажимать клавишу возврата для новых строк, но сообщение не отправляется в Git, пока я не закрою кавычки и не вернусь ,
Вы также можете указать Git использовать редактор по вашему выбору для редактирования сообщения коммита. Из документации по git-commit :
Редактор, используемый для редактирования сообщения журнала фиксации, будет выбран из
GIT_EDITORпеременной среды, переменной core.editorконфигурации, переменной VISUALсреды или EDITOR
переменной среды (в этом порядке). Смотрите git-var для деталей.
Лично я считаю, что проще всего изменять сообщения коммита после факта vi(или любого другого выбранного вами git-редактора), а не в командной строке, выполняя git commit --amendсразу после git commit.
Так почему кто-то это опроверг? Это наиболее удобный способ работы с многострочными командами в bash, вам просто нужно настроить его один раз. Я использовал другие глупые предложения, показанные здесь в других ответах, но как только вы научитесь редактировать свои команды в вашем любимом текстовом редакторе, пути назад просто не будет.
Алекс-Даниил Якименко-А.
1
Это так душераздирающе полезно, я просто не могу поверить, что прожил мои прошлые годы без этого.
Вскоре
2
Вот список неудачных решений в Windows со стандартной оболочкой cmd.exe (чтобы сэкономить время проб и ошибок!):
git commit -m 'HelloEnter не работает: не будет запрашивать новую строку
git commit -m "HelloEnter то же самое
git commit -m "Hello^Enter то же самое
git commit -m 'Hello^EnterWorld'похоже на работу, потому что он спрашивает "Больше?" и позволяет написать новую строку, но, наконец, когда git logвы делаете, вы увидите, что это все еще однострочное сообщение ...
TL; DR: даже если в Windows синтаксический анализ командной строки работает по- другому и ^допускает многострочный ввод, здесь это не поможет.
Только не используйте это грустное, грустное оправдание для «оболочки» оконных предложений.
jthill
2
К сожалению, git, похоже, не учитывает символы новой строки в своем сообщении. Выше уже есть несколько разумных решений, но при написании сценариев это раздражает. Здесь также работают документы, но они могут быть слишком раздражающими (например, файлы yaml)
Хотя это также все еще уродливо, оно допускает «однострочные», которые все еще могут быть полезны. Поскольку обычно строки являются переменными или объединяются с переменными, углины могут быть сведены к минимуму.
Я не вижу, чтобы кто-нибудь упоминал, что если вы не предоставите сообщение, оно откроет вам nano (по крайней мере, в Linux), где вы можете написать несколько строк ...
GIT_EDITOR="emacs" git commit -m 'paragraph1' -m 'paragraph2' -e
поможет вам избежатьvim
.Ответы:
Конечно, как это сделать, зависит от вашей оболочки. В Bash вы можете использовать одинарные кавычки вокруг сообщения и просто оставлять цитату открытой, что заставит Bash запросить другую строку, пока вы не закроете цитату. Нравится:
Кроме того, вы можете использовать «здесь документ» (также известный как heredoc):
источник
git
команда может читать текст сообщения из стандартного ввода, а-F
параметр задает имя файла , чтобы прочитать сообщение от.Если вы просто хотите, скажем, заголовок и строку содержимого, вы можете использовать:
Обратите внимание, что это создает отдельные абзацы, а не строки. Таким образом, между каждыми двумя
-m
строками будет пустая строка , например:источник
-m
для каждой строки. Ницца!man git commit
: -m <msg>, --message = <msg> Использовать данное <msg> в качестве сообщения фиксации. Если задано несколько параметров -m, их значения объединяются в отдельные абзацы.-m
строками будет пустая строка .Используя Git из командной строки с Bash, вы можете сделать следующее:
Просто введите и нажмите, Enterкогда вы хотите новую строку, символ «>» означает, что вы нажали Enter, и есть новая строка. Другие ответы работают также.
источник
Вы должны быть в состоянии использовать
Из руководства Bash :
Это включает в себя поддержку новых строк, как показано выше, а также шестнадцатеричные и юникод-коды и другие. Перейдите в связанный раздел, чтобы увидеть список символов с обратной косой чертой.
источник
echo $'one\ntwo'
?git commit -m "first line"$'\n'"second line"
. Просто отметьте, что вы должны закрыть предыдущую строку перед началом$'string'
.Добавление разрывов строк в ваш коммит Git
Попробуйте следующее для создания многострочного коммита:
Затем проверьте, что вы сделали:
Вы должны получить что-то вроде этого:
Снимок экрана взят из примера, который я настроил с помощью PowerShell с Poshgit.
источник
Делать что-то вроде
не работает, но что-то вроде
работает, но это не очень красиво. Вы устанавливаете
git-commitlb
команду в вашем,PATH
которая делает что-то вроде этого:И используйте это так:
Слово предупреждения, у меня такое ощущение, что общее соглашение состоит в том, чтобы в качестве первой строки была указана итоговая строка, а затем два переноса строки, а затем расширенное сообщение в сообщении фиксации, поэтому выполнение чего-то подобного нарушило бы это соглашение. Конечно, вы можете сделать:
источник
Из документации Git :
Итак, если вы ищете для группировки несколько сообщений коммитов, это должно сделать работу:
источник
Я надеюсь, что это не слишком далеко от опубликованного вопроса, но установка редактора по умолчанию и затем использование
может быть гораздо удобнее.
источник
-e
и он все равно откроет редакторНет необходимости усложнять вещи. После получения
-m "text...
следующей строки нажмите Enter. Когда Enterнажимается>
появляется. Когда вы закончите, просто"
нажмите и нажмите Enter:источник
Я использую zsh на Mac и могу публиковать многострочные сообщения в двойных кавычках ("). По сути, я продолжаю набирать и нажимать клавишу возврата для новых строк, но сообщение не отправляется в Git, пока я не закрою кавычки и не вернусь ,
источник
В Bash / Zsh вы можете просто использовать буквальные разрывы строк внутри кавычек:
Цитирование ANSI-C также работает в Bash / Zsh:
git commit -m $'Multi-line\ncommit\nmessage'
Вы также можете указать Git использовать редактор по вашему выбору для редактирования сообщения коммита. Из документации по git-commit :
источник
Лично я считаю, что проще всего изменять сообщения коммита после факта
vi
(или любого другого выбранного вами git-редактора), а не в командной строке, выполняяgit commit --amend
сразу послеgit commit
.источник
git commit -e
.git commit
, и он откроет редактор с шаблоном сообщения фиксации.Если вы используете Bash, нажмите
C-x C-e
( Ctrl+ x Ctrl+e ), и он откроет текущую команду в выбранном вами редакторе.Вы можете изменить предпочитаемый редактор, настроив
VISUAL
иEDITOR
.Вот что у меня в моем
.bashrc
:источник
Вот список неудачных решений в Windows со стандартной оболочкой cmd.exe (чтобы сэкономить время проб и ошибок!):
git commit -m 'Hello
Enter не работает: не будет запрашивать новую строкуgit commit -m "Hello
Enter то же самоеgit commit -m "Hello^
Enter то же самоеgit commit -m 'Hello^
EnterWorld'
похоже на работу, потому что он спрашивает "Больше?" и позволяет написать новую строку, но, наконец, когдаgit log
вы делаете, вы увидите, что это все еще однострочное сообщение ...TL; DR: даже если в Windows синтаксический анализ командной строки работает по- другому и
^
допускает многострочный ввод, здесь это не поможет.Наконец-то
git commit -e
, наверное, лучший вариант.источник
К сожалению, git, похоже, не учитывает символы новой строки в своем сообщении. Выше уже есть несколько разумных решений, но при написании сценариев это раздражает. Здесь также работают документы, но они могут быть слишком раздражающими (например, файлы yaml)
Вот что я сделал:
Хотя это также все еще уродливо, оно допускает «однострочные», которые все еще могут быть полезны. Поскольку обычно строки являются переменными или объединяются с переменными, углины могут быть сведены к минимуму.
источник
Я не вижу, чтобы кто-нибудь упоминал, что если вы не предоставите сообщение, оно откроет вам nano (по крайней мере, в Linux), где вы можете написать несколько строк ...
Только это необходимо:
источник