web-dev-qa-db-ja.com

git:EOF

したがって、add- ingファイルとcommit- ingの前にgit diff --checkを実行すると、2つの特定のファイルでpath/filename:linenumber: new blank line at EOFが取得されます。これらのファイルの最後の空の行を削除してもメッセージは表示されませんが、ファイルを改行で終了するのは良いスタイルだと思います。不思議なことに、私が思う他のファイルの末尾はまったく同じですが、メッセージは表示されません。 OS XYosemiteでgit2.0.1を使用して、gitを初めて使用します。私はエディターとしてvimを使用しています。

このメッセージを回避しながら、ファイルを改行で終了するにはどうすればよいですか?私はそれを無視すべきですか?

19
Maxim Chetrusca

ここには2つの問題があります。

  • 「改行」と「改行」について混乱しています。

    「改行」は実際の空の行(「改行」文字のみを含む)であり、「改行」は現在の行の終わりをマークするために使用される特殊文字です。

    ほとんどのコンパイラ、インタプリタ、およびUnixツールは、「改行」ではなく複数のファイルを処理するときのあいまいさを避けるために、テキストファイルが改行で終わることを想定しています。

    Vimを含むほとんどのエディターは、すべての行の最後に必要な文字を追加し、最後の行を含めます。そのため、要件が満たされていることを確認するためにあなたの側で行うことは何もありません。

    特にEOFに「改行」を追加しないでください。

  • あなたはおそらく悪い行動に慣れています:

    「改行」文字は、Unixツール、ほとんどのコンパイラ、およびVimによって伝統的に「行末記号」として解釈されます。これは、その文字の後に来るものはすべて別の行にあると見なされることを意味します。その文字はファイルの最後の文字であるため、そこにない行をユーザーに表示する理由はありません。

    残念ながら、ほとんどのGUIエディターはこれを「行区切り文字」として解釈します。つまり、2行の区切りを示し、それらのエディターは通常、その解釈を満たすためにファイルの最後に存在しない行を表示します。

    おそらく多すぎると思いますが、あなたはその間違った振る舞いに慣れているようで、ファイルの最後にまったく不要な「改行」を追加してそれを模倣しようとしています。

ソースファイルの下部に「新しい行」を追加し続けるか、それをある種のフォーマットとコーディングのガイドラインと見なし、それらのGitメッセージをエラーメッセージと見なすのをやめます。

または、それらの役に立たない「新しい行」の追加を停止します。

私は2番目のオプションを選びます。

20
romainl

git diffドキュメント から:

-チェック

変更によって空白エラーが発生した場合に警告します。空白エラーと見なされるものは、core.whitespace構成によって制御されます。デフォルトでは、末尾の空白(空白のみで構成される行を含む)と、行の最初のインデント内で直後にタブ文字が続くスペース文字は、空白エラーと見なされます。問題が見つかった場合は、ゼロ以外のステータスで終了します。 --exit-codeとは互換性がありません。

同様に、 git configドキュメント

core.whitespace

注意すべき一般的な空白の問題のコンマ区切りのリスト。 gitdiffはcolor.diff.whitespaceを使用してそれらを強調表示し、git apply --whitespace = errorはそれらをエラーと見なします。プレフィックス-を付けて、それらのいずれかを無効にすることができます(例:-trailing-space):

  • blank-at-eolは、行末の末尾の空白をエラーとして扱います(デフォルトで有効になっています)。

  • space-before-tabは、行の最初のインデント部分のタブ文字の直前に表示されるスペース文字をエラーとして扱います(デフォルトで有効)。

  • indent-with-non-tabは、同等のタブではなくスペース文字でインデントされた行をエラーとして扱います(デフォルトでは有効になっていません)。

  • tab-in-indentは、行の最初のインデント部分のタブ文字をエラーとして扱います(デフォルトでは有効になっていません)。

  • blank-at-eofは、ファイルの最後に追加された空白行をエラーとして扱います(デフォルトで有効になっています)。

  • trailing-spaceは、blank-at-eolblank-at-eofの両方をカバーする省略形です。

  • cr-at-eolは、行末のキャリッジリターンをラインターミネータの一部として扱います。つまり、このようなキャリッジリターンの前の文字が空白でない場合、末尾のスペースはトリガーされません(デフォルトでは有効になっていません)。 )。

  • tabwidth=<n>は、タブが占める文字位置の数を示します。これは、タブなしのインデントと、Gitがタブインデントエラーを修正する場合に関連します。デフォルトのタブ幅は8です。許可される値は1〜63です。


ご覧のとおり、blank-at-eofはデフォルトで有効になっています。 -blank-at-eofcore.whitespace構成に追加するか、独自のcore.whitespace構成を使用して、無効にすることができます。

13
Sascha Wolf