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



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



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

971   14  

14 ответов:

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

git commit -m 'Message
goes
here'

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

git commit -F- <<EOF
Message
goes
here
EOF

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

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

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

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

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

вы должны быть в состоянии использовать

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

С Bash manual:

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

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

добавление разрывов строк в git commit

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

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.

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

git commit -m"test\ntest"

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

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

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

#!/bin/bash

message=

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

и использовать его так:

git commitlb "line1\nline2\nline3"

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

git commitlb "line1\n\nline2\nline3"

Я надеюсь, что это не ведет слишком далеко от запостил вопрос, но настройки редактора по умолчанию и затем с помощью

git commit -e

может быть гораздо более удобным.

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

С ГИТ документации:

- m
--сообщение=
Используйте данный в качестве сообщения фиксации. Если несколько -m параметры заданы, их значения объединены в отдельные абзацы.

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

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

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

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

вот что у меня в моем .bashrc:

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

вы могли бы использовать git commit -m "$(echo)" или git commit -m $'\n'

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

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

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

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

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

  • git commit -m "Helloвведите idem

  • git commit -m "Hello^введите idem

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

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

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

Comments

    Ничего не найдено.