Git commitが空のテキストファイルを開きます。


93

私が読んだすべてのGitチュートリアルで、彼らはあなたができると言っています:

git init
git add .
git commit

そうすると、大きなテキストファイルが開きます。どのチュートリアルもこれに対処しているようには見えないので、ファイルの処理方法や、ファイルに何を挿入するかわからない場合があります。

回答:


124

あなたはこのテキストファイルにコミットメッセージを入れて、保存して終了するつもりです。

次のコマンドで、gitが使用するデフォルトのテキストエディターを変更できます。

git config --global core.editor "nano"

nanoを、通常はテキストエディターを開くコマンドに変更する必要があります。


15
--globalデフォルトを変更するために追加する必要はありませんか?
Znarkus、2012年

4
@Znarkus良い点。詳細はこちらをご覧ください。基本的に、与えられた答えは現在のプロジェクトの設定のみを変更しますが、現在--globalのユーザーの設定は--system変更し、そのコンピューター上の全員の設定を変更します。
Matt Fenwick、2012年

24
この回答には良い情報が含まれていますが、実際の質問には対応していません。
エイドリアンシュミット

5
これが実際に質問に回答する回答の一部として賛成投票が2倍になる理由はわかりません。これはしません。
Johan

2
@ヨハン、あなたは間違っていませんが、これに偶然出会ったので、私はこの答えが非常に役立つことがわかりました。だから私はそれを賛成した。
Danation 2014

65

Ben Collinsが述べたように-m "..."、コミットをインラインで入力するための引数なし(これは、簡潔にすることをお勧めするため、一般に悪い考えです)、開かれるこの「大きなテキストファイル」は、コミットメッセージを入力するウィンドウです。

通常、最初の行に概要を記述し、行をスキップして、その下に詳細なメモを書き込むことをお勧めします。これは、適切な件名と本文に加えられた変更の完全なリストを含むコミットメッセージを電子メールで送信するようなプログラムを支援します。

EDITORシェル変数を変更する代わりに、~/.gitconfigファイルに行を追加して使用するエディターを変更することもできます。

[core]
    editor = emacs
    excludesfile = /Users/will/.gitignore

この2行目は実際には問題とは関係ありませんが、本当に役立つので、リポジトリにコミットする必要がないことがわかっ~/.gitignoreているすべてのファイルタイプをファイルに入力できます。


36

開かれているテキストファイルは、現在のコミット操作の概要です。git commitを実行すると、このファイルに移動するので、ファイルの先頭にコミットメッセージを追加できます。メッセージを追加したら、このファイルを保存して終了します。

このコマンドには "-m msg"スイッチがあり、コマンドラインでコミットメッセージを追加できます。


こんにちはルー、私はGItの初心者でもあります。テキストファイルが存在するか、書き込んで存在した後、Gitは実際にはステージングと今書いたばかりのコミットメッセージをコミットしなかったと思います。それで、書き込み後にコミットを作成して終了できない場合、このテキストファイルにメッセージを追加する意味は何ですか。(間違っていた場合は訂正してください、ありがとうございます)
SLN

@SLN概説しているシナリオはあまり明確ではありません。推測して、コミットするファイルをステージングしていない可能性があることをお勧めします。そのため、コミットしようとしても何も起こりませんでした。コミットする最初のステージファイルに「git add」を使用し、次に「git commit」を使用して実際のコミットを実行します。
ルー、

15

Mac OS XでBBEditを使用している場合は、これをコミットメッセージ用のエディターとして選択できます。

git config --global core.editor "bbedit -w"

編集が終了したら、ファイルを保存して閉じます。gitはそれをコメントに使用します。


15

エディターのデフォルトがvi / vimであるとすると、次のように入力してコミットメッセージエディターを終了できます。

:x

コミットメッセージファイルを保存して終了します。次に、通常のgitコマンドセクションに戻ります。

その他のviコマンド:http :
//www.lagmonster.org/docs/vi.html


9
私と同じように、挿入/置換モード(つまり、コミットメッセージを入力)でした。その場合は、esc入力して:xから保存して終了する前に、コマンドモードに入る必要があります。
Martin Carney、2011

1
もちろん、彼のエディタのデフォルトはvi / vimであると仮定します。これはすべての人に当てはまるわけではありません。確かにこのemacsユーザーは対象外です;)
haziz

これは私に多くのトラブルを救いました。どうもありがとうございました
Danation 2014

12

すべてが言ったように、これはあなたがコミットコメントを追加する場所です-しかし、一部の人にとっては、エディタ設定を構成していない場合、それでも混乱する可能性があり、VIが何であるかを知らない場合、ショックを受ける可能性があります、あなたはあなたがまだGIT-Bashにいると思うので

その場合、実際にはテキストエディターで作業を行ういくつかの興味深い方法があり、この一連のコマンドは、最初のコミットを通過して、使い慣れたエディターを構成するか、それを次のように使用できるようにするのに役立ちます。それを使用する方法を学ぶ機会。


8
viで終わることはいつも私にショックを与えることを知っています:)
ウィルロバートソン

1
物事は今でははるかに理にかなっています。+1
Matt Ellen

11

-mコミットするオプションは、コマンドラインにコミットメッセージを入力することができます:

git commit -m "my first commit"

7

新しいコミットを作成すると、gitがテキストエディターを起動し、それに何かを書き込みます。

このテキストエディターを使用して、意図的に作成されたコミットに関連付けられるコミットメッセージを記述します。

完了したら、テキストエディターを保存して終了します。Gitは作成した内容をコミットメッセージとして使用します。

コミットメッセージには、次のような特定の構造があります。

コミットメッセージの最初の行は、メッセージヘッダー(またはタイトル)として使用されます。コミットヘッダーの優先される長さは40文字未満です。これは、切り捨てられる前にgithubが特定のリポジトリの[コミット]タブに表示する文字数であり、一部の人々はイライラします。

ヘッダーを作成するときは、最初の単語に大文字の現在形動詞を使用するのが一般的ですが、まったく必要ありません。

1つの改行は、メッセージのヘッダーと本文を示します。

体は好きなように構成できます。コミットによって導入された変更の概要は妥当です。一部のサードパーティアプリケーションでは、さまざまな種類のフックを開始するために、コミットメッセージの本文に含まれる情報を使用します(2つ挙げると、GerritとPivotal Trackerを考えています)。

これは短くて甘い例です。先頭#はコメントを示します。

Gitignore index.pyc

Ignore gunicorn generated binary file
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch dev
# Your branch is ahead of 'origin/dev' by 10 commits.
#   (use "git push" to publish your local commits)
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   .gitignore
#

ここでトーバルズ氏は、良いコミットをするものについて意見を述べています。

そして、ここで Tpopeも同様に行います。

他のいくつかの回答で述べられているように、デフォルトのエディターを変更することは、コマンドラインの1行です。

私の好みのために:

git config --global core.editor "vim"

2
これは、質問に対する受け入れられた回答である必要があります。
mppfiles 2014年

6

メッセージの入力が終わったら、Escapeを押してからZZを試してください。他の人が言ったように、そのcommitコマンドを実行すると、実際にはメッセージを入力するテキストエディターが実行されます。私の場合(OS X)VIでしたが、少し調べてみました。その場合は、Escapeキーを押して「挿入」モードではなく「コマンド」モードに入り、ZZを入力します。このタスクを達成する方法は他にもあると思いますが、それでうまくいきました。VIやemacsを使用したことがなかったので、すぐにはわかりませんでした。また、使用している初心者向けガイドには記載されていませんでした。うまくいけば、これが役立ちます。


4

git commitコマンドはで指定されたエディタ開きますEDITORあなたがコミットコメントを入力できるように環境変数を。LinuxまたはBSDシステムでは、これはデフォルトでviですが、任意のエディターが機能するはずです。

コメントを入力してファイルを保存するだけです。


2

VIMで:wの後にファイル名を入力しようとし続けたため、混乱しました。それはコミットを引き起こしません。代わりに、「空のコミットメッセージによるコミットの中止」というメッセージが表示され続けました。:wの後にファイル名を置かないでください。:wは、デフォルトでファイルを.git / COMMIT_EDITMSGに保存します。次に:qで終了して、コミットを完了します。結果はgit logで確認できます。


または、:xを使用して保存して終了することもできます。
TJエリス

2

エディターをemacsに変更したので、すべて正常に動作します。

しかし、これを設定する前に、「git commit -a」はgeditを開きましたが、すぐに「空のコミットメッセージによるコミットの中止」で終了しました。geditからファイルを保存しても効果はありませんでした。"git config --global core.editor" gedit ""を使用してエディターを明示的に設定しても、同じ結果が得られました。

emacsには何の問題もありませんが、好奇心から、これがgeditで機能しないのはなぜですか?それを機能させる方法はありますか?

ありがとう。


geditが既に実行されている場合、「gedit file.txt」を実行すると、既存のウィンドウでファイルが開き、すぐに戻ります。具体的には、これを実際の質問として投稿してください。具体的には、gitでのgeditの使用についてです。
araqnid、2011年

6
これにも遭遇しました。:あなたは、「スタンドアロン」モードで実行するようにgeditのを設定することで、それを修正することができますgit config --global core.editor "gedit -s"
brittohalloran

2

OS XIを使用している人にとって、このコマンドはうまく機能することがわかりました。
git config --global core.editor "open -t -W"

これにより、gitはデフォルトのテキストエディタ(私の場合はtextedit)を開き、アプリケーションが終了するのを待ちます。コミットが完了する前に、「保存」してから「テキスト編集を終了」する必要があることに注意してください。このページで詳しく説明されているように、他にもいくつか試してみることができるコマンドがあります。

Apple Developer Library-コマンドを開く

またgit config --global core.editor "open -e -W"、デフォルトのエディターが何であるかに関係なく、gitが常にtexteditを開きたい場合にも試すことができます。


1

ええ、あなたが賢明なエディタセットを持っていることを確認してください。デフォルトのエディターが何であるかはわかりませんが、私と同じようにnanoの場合(commitを入力した後、上部近くのどこかで言うでしょう)コメントを入力してからCtrl-xを押して終了します。次にyを押し、Enterキーを押してコミットを確認します。

また、事前に巨大な差分リストではなく、コミットするファイルの簡単なリストを表示したい場合は、

git diff --name-only

1

リビジョン管理を行うときは、変更内容を常に説明する必要があります。通常、「最初のコミット」などのコメントを初めて受け取ったとき。

ただし、長期的には、コミットごとに適切なコメントを付ける必要があります。次のような形式が必要になります。

実験的な機能xを追加しました。

Xは、条件Zで機能Yのパフォーマンスを向上させます。Xが必要な場合は、-xまたは--feature-eksスイッチを使用して機能をアクティブ化してください。これは機能リクエスト#1138に対処します。


1

ターミナルも初めてなので、「Escape and then ZZ」でうまくいきました。この問題は数か月前から発生しており、回避策も見つかりませんでした。

簡単なアドバイスをしてくれたTheGeoffに感謝します。


0

以下はおそらくすべての変更をコミットする最も簡単な方法です。

git commit -a -m "Type your commit message here..."

もちろん、より詳細なコミット方法がありますが、それで始められるはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.