私はコマンドラインからGitを使用しgit commit -m ""
ていて、Vimに入らずにコミットメッセージに改行を追加しようとしています(を使用)。
これは可能ですか?
GIT_EDITOR="emacs" git commit -m 'paragraph1' -m 'paragraph2' -e
があなたを避けるのに役立ちますvim
。
私はコマンドラインからGitを使用しgit commit -m ""
ていて、Vimに入らずにコミットメッセージに改行を追加しようとしています(を使用)。
これは可能ですか?
GIT_EDITOR="emacs" git commit -m 'paragraph1' -m 'paragraph2' -e
があなたを避けるのに役立ちますvim
。
回答:
確かに、それがどのように行われるかはあなたのシェルに依存します。Bashでは、メッセージを単一引用符で囲むことができ、引用符を閉じるまで、引用符を開いたままにしておくことができます。このような:
git commit -m 'Message
goes
here'
または、「ヒアドキュメント」(別名ヒアドキュメント)を使用することもできます。
git commit -F- <<EOF
Message
goes
here
EOF
git
コマンドは標準入力からメッセージテキストを読むことができ、そして-F
オプションからメッセージを読み取るために、ファイル名を与えます。
たとえば、見出し行とコンテンツ行が必要な場合は、次のように使用できます。
git commit -m "My head line" -m "My content line."
これにより、行ではなく個別の段落が作成されることに注意してください。したがって、各2行の間に空白行があります-m
。例:
My head line
My content line.
-m
行ごとに区切ります。いいね!
man git commit
:-m <msg>、--message = <msg>指定された<msg>をコミットメッセージとして使用します。複数の-mオプションを指定すると、それらの値は別々の段落として連結されます。
-m
行の間に空白行があります。
BashでコマンドラインからGitを使用すると、次のことができます。
git commit -m "this is
> a line
> with new lines
> maybe"
Enter新しい行が必要なときに入力して押すだけで、「>」記号はを押したことを意味しEnter、新しい行があります。他の答えも機能します。
使えるはず
git commit -m $'first line\nsecond line'
Bashマニュアルから:
$ ' string ' 形式の単語は特別に扱われます。単語はstringに展開され 、バックスラッシュでエスケープされた文字はANSI C規格の指定に従って置き換えられます。
これには、上記の改行のサポートに加えて、16進コードとUnicodeコードなどが含まれます。リンクされたセクションに移動して、バックスラッシュでエスケープされた文字のリストを確認してください。
echo $'one\ntwo'
?
git commit -m "first line"$'\n'"second line"
。を開始する前に、前の文字列を閉じる必要があることに注意してください$'string'
。
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 -m"test\ntest"
動作しませんが、次のようなもの
git commit -m"$(echo -e "test\ntest")"
動作しますが、あまりきれいではありません。次のようなgit-commitlb
コマンドをセットアップしますPATH
。
#!/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>
--message = <msg>
指定された<msg>をコミットメッセージとして使用します。複数の-m
オプションが指定されている場合、それらの値は個別の段落として連結されます。
したがって、複数のコミットメッセージをグループ化する場合は、次のように機能します。
git commit -m "commit message1" -m "commit message2"
物事を複雑にする必要はありません。を-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 ...
Macではzshを使用しており、複数行のコミットメッセージを二重引用符( ")で囲んで投稿できます。基本的に、改行を入力してReturnキーを押し続けますが、引用符を閉じて戻るまでメッセージはGitに送信されません。
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を参照してください。
個人的に、私は事実の後でコミットメッセージを変更するのが最も簡単だと思います vi
ことによって、(または任意選択のあなたのgitのエディタがある)ではなく、コマンドライン上でgit commit --amend
右後をgit commit
。
git commit -e
ます。
git commit
、そしてそれはコミットメッセージテンプレートでエディタを開きます。
Bashを使用している場合は、C-x C-e
(Ctrl+ x Ctrl+e)、現在のコマンドがお好みのエディターで開きます。
VISUAL
とを調整することで、優先エディターを変更できますEDITOR
。
それは私が私の中に持っているものです.bashrc
:
export ALTERNATE_EDITOR=''
export EDITOR='emacsclient -t'
export VISUAL='emacsclient -c'
export SUDO_EDITOR='emacsclient -t'
標準のcmd.exeシェルを使用したWindows で失敗するソリューションのリストを次に示します(試行錯誤の時間を節約するためです)。
git commit -m 'Hello
Enter 動作しません:新しい行を要求しません
git commit -m "Hello
Enter 同上
git commit -m "Hello^
Enter 同上
git commit -m 'Hello^
Enter World'
それは尋ねるので働くように見えます 「もっと?」新しい行を書くことができますが、最後に行うgit log
と、それはまだ1行のメッセージであることがわかります...
TL; DR:Windowsの場合でも、コマンドライン解析は機能します 異なり、^
複数行の入力が可能ですが、ここでは役に立ちません。
最後git commit -e
はおそらく最良の選択肢です。
悲しいことに、gitはメッセージの改行文字を許可していないようです。上記のさまざまな適切な解決策はすでにありますが、スクリプトを作成するとき、それらは厄介です。ここでドキュメントも機能しますが、扱いが面倒すぎる(yamlファイルを考える)
これが私がしたことです:
git commit \
--message "Subject" \
--message "First line$(echo)Second line$(echo)Third Line"
これもまだ醜いですが、それでもまだ役立つかもしれない「ワンライナー」を可能にします。通常、文字列は変数であるか、変数と組み合わせられるため、醜さは最小限に抑えることができます。