2016-11-09 8 views
1

Я хочу улучшить способ, которым я занимаюсь git, и я читал его в Интернете. Я следил за сайтом здесь http://chris.beams.io/posts/git-commit/, и это привело меня к https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration, где я могу установить свой редактор по умолчанию, но я до сих пор не понимаю, как отредактировать строку темы отдельно от тела коммита.Как сделать git commit с темой и телом сообщения?

Я привык делать:

git commit -am "message here" 

но, как я понимаю, его больше совершает, следует использовать редактор как Vim (на мой макинтош)

+2

Это разделение на «сюжетной линии» и «тела» осуществляется клиентом, который отображает сообщение фиксации. Первая строка сообщения фиксации будет обычно «субъектом». – Thilo

+0

Как отличить первую и вторую строки? Как я могу использовать редактор? – weaveoftheride

+1

С перерывом. Легче сделать в текстовом редакторе. – Thilo

ответ

6

Самый простой способ сделать это - запустить git commit без -m и сообщение.

(git commit -a ярлык для git add .; git commit)

Это запустит редактор, в котором можно ввести сообщение фиксации на нескольких строках. Затем вы сохраняете файл и, когда редактор выходит, git commit продолжает и использует сообщение из файла.

Если вы предпочитаете делать все из одной команды (или вы пишете сценарий, который должен вызывать git commit, и этот интерактивный способ совершения не является опцией), то вы можете предоставить тему фиксации и тело сообщения фиксации на using the -m argument two times :

git commit -m "this is the subject" -m "this is the body" 

Использование -m несколько раз в командной строке присоединяет сообщения в виде отдельных пунктов (разделенных пустой строкой). Это отлично работает, чтобы предоставить предмет в качестве аргумента первого -m и тела сообщения как аргумент второго -m.

Нет простого способа встраивания новых строк в тело сообщения commit. Используя три или более раза, параметр -m выдаст сообщение о фиксации, которое содержит пустые строки, и это, вероятно, не то, что вы хотите.

Если вы находитесь на Linux или macOS, а у вас есть оболочка выбора bash, тогда есть уродливый, но рабочий способ написать тело сообщения, содержащее новые строки. Вставьте каждую строчку в кавычки ("), чтобы позволить им содержать пробелы и присоединяться к строкам с помощью $'\n', который является способом записи специальных символов в командной строке (или в скрипте).

Команда выглядит следующим образом:

git commit -m "the subject" -m "the first line"$'\n'"the second line"$'\n'"the third line" 
+3

В sh/bash есть способ, который может быть менее уродливым (но с небольшим количеством ошибок) встраивать новые строки: просто намеренно не удается закрыть цитату, как в 'git commit -m subject -m 'first line'. Когда вы введите эту команду, оболочка переключается с приглашения # 1 (обычно заканчивающегося на '$'), чтобы вызвать # 2 (обычно заканчивая '>'), и вы можете продолжить ввод.Строка с одной двойной кавычкой завершает ввод, поэтому вы можете ввести: «вторая строка», а затем «третья строка». Я не особо рекомендую * это, просто предлагая ее в качестве альтернативы '$ Синтаксис '\ n''. – torek

+0

@torek - Это отличная альтернатива. Очень чистая и практичная. Спасибо! – xZero

1

Run: git commit -a и вы должны получить интерфейс редактора VI, который позволяет вводить строку темы и сообщение. После окончания ввода текста нажмите ESC, затем: wq