web-dev-qa-db-ja.com

コマンドラインからgit commit -mに改行を追加してください。

私はコマンドラインからGitを使っていて、Vimに入らずにコミットメッセージに改行を追加しようとしています(git commit -m ""を使って)。

これは可能ですか?

625
Alan Whitelaw

確かに、それがどのように行われるかはあなたのシェルに依存します。 Bashでは、メッセージを一重引用符で囲み、その引用を開いたままにしておけば、引用を閉じるまで別の行にBash Promptが表示されます。このような:

git commit -m 'Message
goes
here'

代わりに、 "here文書"を使用することができます。

git commit -F- <<EOF
Message
goes
here
EOF
567
Simon Richter

ヘッドラインとコンテンツラインがほしい場合は、次のようにします。

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

BashでコマンドラインからGitを使用すると、次のことができます。

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

単に入力して押す Enter 新しい行が必要なときは、 ">"記号が押されたことを意味します。 Enterそして、新しい行があります。他の答えもうまくいきます。

378
esse

あなたは使えるはずです

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

Bashのマニュアルから

$ ' string 'の形式の単語は特別に扱われます。 Wordは string に展開され、バックスラッシュでエスケープされた文字はANSI C規格の指定に従って置き換えられます。

これには、上に示したような改行のサポートに加えて、16進数やUnicodeコードなどが含まれます。リンクされたセクションに行き、バックスラッシュでエスケープされた文字のリストを見てください。

89

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

スクリーンショットは、PoshgitでPowerShellを使用して設定した例です。

83
Jon Crowell

のようなことをする

git commit -m"test\ntest"

動作しませんが、のようなもの

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

動作しますが、それは非常にきれいではありません。 PATHgit-commitlbコマンドを設定します。

#!/bin/bash

message=$1

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

そしてこれを次のように使います。

git commitlb "line1\nline2\nline3"

警告の言葉、私は一般的な慣習では、最初の行として要約行、次に2行の改行、そして次にコミットメッセージ内の拡張メッセージを持つことになっていると感じています。もちろんできます:

git commitlb "line1\n\nline2\nline3"
40
Peter Farmer

これが投稿された質問からそれほど離れていないことを願いますが、 デフォルトエディタの設定 を使って

git commit -e

はるかに快適かもしれません。

33
Tobse

Gitのドキュメント :から

-m <msg>
- メッセージ= <msg>
指定した<msg>をコミットメッセージとして使用します。複数の-mオプションが与えられた場合、それらの値は別々の段落として連結されます。

それで、もしあなたが複数のコミットメッセージをグループ化することを探しているなら、これは仕事をするべきです:

git commit -m "commit message1" -m "commit message2"
28
Saravanan M

私はMac上でzshを使い、二重引用符( ")で複数行のコミットメッセージを投稿することができます。 。

19
Abizern

ものを複雑にする必要はありません。 -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 ...
18
blongho

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 を参照してください。

7
Eugene Yarmash

Bashを使っているなら、C-x C-eCtrl+xCtrl+eそして、それはあなたの好みのエディタで現在のコマンドを開きます。

VISUALEDITORを調整することで好みのエディタを変更できます。

それが私の.bashrcにあります。

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

個人的には、git commit --amendの直後にgit commitを実行することで、コマンドラインではなくvi(または選択したgitエディタが何であるかにかかわらず)で事実の後にコミットメッセージを変更するのが最も簡単です。

5
amphibient

これはWindows上で失敗する解決策の一覧です(標準のcmd.exeシェルを使用すると、試行錯誤の時間を節約できます)。

  • git commit -m 'Hello Enter 機能しません。新しい行を要求しません

  • git commit -m "Hello Enter 同音

  • git commit -m "Hello^ Enter 同音

  • git commit -m 'Hello^ Enter World' "More?"を要求して新しい行を書くことができるので動作しているように見えますが、最後にgit logを実行するとまだ1行であることがわかります。オンラインメッセージ...

TL; DR:Windows上では、コマンドライン解析の動作 が異なっていても^が複数行入力を許可している場合でも、ここでは役に立ちません。

最後に git commit -e がおそらく最善の選択肢です。

1
Basj

悲しいことに、gitはそのメッセージに改行文字を許可していないようです。すでに上にはさまざまな合理的な解決策がありますが、スクリプトを作成するときには、それらは面倒です。ここでも文書は動作しますが、対処するには少し面倒です(yamlファイルと考えてください)

これが私がしたことです:

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

これもまだ醜いですが、それはまだ便利かもしれません 'ワンライナー'を可能にします。通常、文字列は変数であるか、変数と組み合わされているため、醜さは最小限に抑えられます。

0
oliver