私はコマンドラインからGitを使っていて、Vimに入らずにコミットメッセージに改行を追加しようとしています(git commit -m ""
を使って)。
これは可能ですか?
確かに、それがどのように行われるかはあなたのシェルに依存します。 Bashでは、メッセージを一重引用符で囲み、その引用を開いたままにしておけば、引用を閉じるまで別の行にBash Promptが表示されます。このような:
git commit -m 'Message
goes
here'
代わりに、 "here文書"を使用することができます。
git commit -F- <<EOF
Message
goes
here
EOF
ヘッドラインとコンテンツラインがほしい場合は、次のようにします。
git commit -m "My head line" -m "My content line."
BashでコマンドラインからGitを使用すると、次のことができます。
git commit -m "this is
> a line
> with new lines
> maybe"
単に入力して押す Enter 新しい行が必要なときは、 ">"記号が押されたことを意味します。 Enterそして、新しい行があります。他の答えもうまくいきます。
あなたは使えるはずです
git commit -m $'first line\nsecond line'
$ ' string 'の形式の単語は特別に扱われます。 Wordは string に展開され、バックスラッシュでエスケープされた文字はANSI C規格の指定に従って置き換えられます。
これには、上に示したような改行のサポートに加えて、16進数やUnicodeコードなどが含まれます。リンクされたセクションに行き、バックスラッシュでエスケープされた文字のリストを見てください。
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
あなたはこのようなものになってしまうはずです:
スクリーンショットは、PoshgitでPowerShellを使用して設定した例です。
のようなことをする
git commit -m"test\ntest"
動作しませんが、のようなもの
git commit -m"$(echo -e "test\ntest")"
動作しますが、それは非常にきれいではありません。 PATH
にgit-commitlb
コマンドを設定します。
#!/bin/bash
message=$1
git commit -m"$(echo -e "$message")"
そしてこれを次のように使います。
git commitlb "line1\nline2\nline3"
警告の言葉、私は一般的な慣習では、最初の行として要約行、次に2行の改行、そして次にコミットメッセージ内の拡張メッセージを持つことになっていると感じています。もちろんできます:
git commitlb "line1\n\nline2\nline3"
Gitのドキュメント :から
-m <msg>
- メッセージ= <msg>
指定した<msg>をコミットメッセージとして使用します。複数の-m
オプションが与えられた場合、それらの値は別々の段落として連結されます。
それで、もしあなたが複数のコミットメッセージをグループ化することを探しているなら、これは仕事をするべきです:
git commit -m "commit message1" -m "commit message2"
私はMac上でzshを使い、二重引用符( ")で複数行のコミットメッセージを投稿することができます。 。
ものを複雑にする必要はありません。 -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 ...
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 を参照してください。
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 --amend
の直後にgit commit
を実行することで、コマンドラインではなくvi
(または選択したgitエディタが何であるかにかかわらず)で事実の後にコミットメッセージを変更するのが最も簡単です。
これは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
がおそらく最善の選択肢です。
悲しいことに、gitはそのメッセージに改行文字を許可していないようです。すでに上にはさまざまな合理的な解決策がありますが、スクリプトを作成するときには、それらは面倒です。ここでも文書は動作しますが、対処するには少し面倒です(yamlファイルと考えてください)
これが私がしたことです:
git commit \
--message "Subject" \
--message "First line$(echo)Second line$(echo)Third Line"
これもまだ醜いですが、それはまだ便利かもしれません 'ワンライナー'を可能にします。通常、文字列は変数であるか、変数と組み合わされているため、醜さは最小限に抑えられます。