1. ホーム
  2. git

[解決済み] LFはgitでCRLFに置き換えられます - それは何ですか、そしてそれは重要ですか?[重複]。

2022-01-29 07:04:31

質問事項

新しいrailsアプリケーションを作成すると、LFの置き換えに関する警告がgitに表示されるのですが。私は git init git add .

で、ドーン!です。ほとんどすべてのファイルでこのポップアップを見ることができます。私は通常、そのままアプリケーションをビルドし続け、ファイルを何度も変更すると消えます。

このファイルは、作業ディレクトリにある元の行末を持つことになります。 警告 Gemfile では、LF は CRLF に置き換えられます。

このファイルは、作業ディレクトリ内の元の行末を持つようになります。 の警告を表示します。Gemfile.lock の LF は CRLF に置換されます。

このファイルは、作業ディレクトリ内の元の行末を持つようになります。 警告 READMEでは、LFはCRLFに置き換えられます。

LFとCRLFの違いは何ですか?

長い目で見て気にした方がいいのか、それとも無視していつも通りにした方がいいのか?

解決方法は?

Unixシステムでは、行の終わりはラインフィード(LF)で表されます。Windows では、行はキャリッジリターン (CR) とラインフィード (LF) で表現されます。

Windows マシンで作業しているひとりの開発者が、git が自動的に LF を CRLF に置き換えることを気にしないのなら、git のコマンドラインで次のように入力すればこの警告をオフにすることができます。

git config core.autocrlf true

git がこれをどう扱うべきかを知的に判断したい場合。 ドキュメントを読む

以下はスニペットです。

書式設定と空白

フォーマットとホワイトスペースの問題は、よりイライラさせられるものです。 多くの開発者が共同作業を行う際に遭遇する微妙な問題。 特にクロスプラットフォームで。特にクロスプラットフォームでは、パッチやその他の というのも、共同作業によって微妙な空白の変更が加わってしまうからです。 エディタは黙ってそれを導入します。 Windowsの場合、改行コードが入れ替わってしまう可能性があります。Git には、いくつかの このような問題に対処するための設定オプションがあります。

core.autocrlf

Windowsでプログラミングをしていて、そうでない人と一緒に仕事をする場合 (その逆も然り)、おそらくどこかで行末の問題にぶつかることでしょう。 の点です。これは、Windowsがキャリッジリターン文字と とラインフィード文字でファイルの改行を行うのに対し、Mac や Linuxでは、ラインフィード文字のみを使用します。これは微妙なところですが クロスプラットフォームの作業では、信じられないほど厄介な事実があります。 Windowsでは、既存のLFスタイルの行末を無言でCRLFに置き換えるか、あるいは Enterキーを押したときに両方の改行文字が挿入されます。

Gitは、この問題を、CRLFの改行コードをLFに自動変換して処理することができます。 ファイルをインデックスに追加するときと、コードをチェックアウトするときにその逆があります。 をファイルシステム上に配置します。この機能を有効にするには core.autocrlfの設定です。Windowsマシンを使っている場合は、これをtrueに設定してください。 - これは、コードをチェックアウトするときに、LF終端をCRLFに変換するものです。

$ git config --global core.autocrlf true

LinuxやMacで改行コードにLFを使用している場合、その改行コードに対応するために ファイルをチェックアウトするときに、Gitが自動的に変換することはありません。 しかし、もしCRLFで終わるファイルが誤って導入されてしまった場合。 であれば、Git に修正させたいと思うかもしれません。GitにCRLFを コア.autocrlfを次のように設定することで、コミット時にLFを使用することができます。 を入力します。

$ git config --global core.autocrlf input

この設定により、WindowsのチェックアウトではCRLFの末尾が残るはずです。 しかし、MacやLinuxシステム、リポジトリではLFエンディングになります。

もしあなたがWindowsプログラマーで、Windowsのみのプロジェクトを行っているのであれば、次のようにします。 この機能をオフにすることで、キャリッジリターンを記録することができます。 を設定することで、リポジトリに保存されます。

$ git config --global core.autocrlf false