Windows マシンで、 を使用していくつかのファイルを追加しましたgit add
。次のような警告が表示されました:
LFはCRLFに置き換えられます
この変換の影響は何でしょうか?
ベストアンサー1
core.autocrlf
これらのメッセージは、Windows ののデフォルト値が正しくないことが原因で発生します。
のコンセプトは、autocrlf
行末の変換を透過的に処理することです。そして、それは実現します。
悪いニュース: 値は手動で設定する必要があります。
良いニュース: Git のインストールごとに1回だけ実行する必要があります(プロジェクトごとの設定も可能です)。
仕組みautocrlf
:
core.autocrlf=true: core.autocrlf=input: core.autocrlf=false:
repository repository repository
^ V ^ V ^ V
/ \ / \ / \
crlf->lf lf->crlf crlf->lf \ / \
/ \ / \ / \
ここでcrlf
= win スタイルの改行マーカー、lf
= unix スタイル (Mac OS X 以降の Mac でも使用されます)。
(上記の 3 つのオプションのいずれの場合も、pre-osxcr
は影響を受けません。)
この警告はいつ表示されますか (Windows の場合)?
– autocrlf
=ファイルの 1 つにtrue
unix スタイルが含まれている場合(= まれに)、 – =ファイルの 1 つにwin スタイルが含まれている場合(= ほぼ常に)、 – = – 絶対にありません。lf
autocrlf
input
crlf
autocrlf
false
この警告は何を意味していますか?
「 LF は CRLF に置き換えられます」という警告は、( autocrlf
=を持つtrue
) コミット チェックアウト サイクル後に Unix スタイルの LF が失われる (Windows スタイルの CRLF に置き換えられる) ことを示しています。Git は、Windows で Unix スタイルの LF を使用することを想定していません。
「 CRLF は LF に置き換えられます」という警告は、( autocrlf
=を使用すると) コミット チェックアウト サイクル後に Windows スタイルの CRLF が失われる (Unix スタイルの LF に置き換えられる) ことを意味しますinput
。Windows では使用しないでくださいinput
。
autocrlf
どのように機能するかを示すもう一つの方法
1) true: x -> LF -> CRLF
2) input: x -> LF -> LF
3) false: x -> x -> x
ここでxはCRLF(Windowsスタイル)またはLF(Unixスタイル)のいずれかであり、矢印は
file to commit -> repository -> checked out file
直し方
のデフォルト値はcore.autocrlf
Git のインストール時に選択され、システム全体の gitconfig ( %ProgramFiles(x86)%\git\etc\gitconfig
Windows の場合 、/etc/gitconfig
Linux の場合 ) に保存されます。また、次のものがあります (次の順序でカスケードされます)。
– 「グローバル」(ユーザーごと) の gitconfig が にあり~/.gitconfig
、さらに別の
– 「グローバル」(ユーザーごと) の gitconfig が$XDG_CONFIG_HOME/git/config
または にあり$HOME/.config/git/config
、
– 「ローカル」(リポジトリごと) の gitconfig が.git/config
作業ディレクトリにあります。
そこで、git config core.autocrlf
作業ディレクトリに書き込み、現在使用されている値を確認し、
– git config --system core.autocrlf false
# システムごとのソリューション
– git config --global core.autocrlf false
# ユーザーごとのソリューション
– git config --local core.autocrlf false
# プロジェクトごとのソリューション
警告
–git config
設定は設定によって上書きできますgitattributes
。
–crlf -> lf
変換は新しいファイルを追加するときにのみ行われ、crlf
リポジトリに既に存在するファイルは影響を受けません。
モラル(Windows用):
-このプロジェクトを Unix でも使用する予定の場合 (およびエディター/IDE を Unix の行末を使用するように構成したくない場合) はcore.autocrlf
=を使用します。 -このプロジェクトを Windows のみで使用する予定の場合 (またはエディター/IDE を Unix の行末を使用するように構成している場合) は=を使用します。 -正当な理由がない限り (たとえば、 Windows で Unix ユーティリティを使用している場合や、makefile の問題が発生した場合)、= は使用しないでください。true
core.autocrlf
false
core.autocrlf
input
PS Git for Windows をインストールするときに何を選択すればよいですか?
Unix でプロジェクトを使用しない場合は、デフォルトの最初のオプションに同意しないでください。3 番目のオプション (そのままチェックアウト、そのままコミット) を選択します。このメッセージは表示されません。決して。
PPS: 私の個人的な好みとしては、エディター/IDE をUnix スタイルの終了を使用するように構成し、core.autocrlf
に設定することですfalse
。
アップデート(2022)
2018年以降、gitは--再正規化必要に応じて既存の行末を修正するリポジトリ。