1. ホーム
  2. git

[解決済み] Windowsのgit「警告。LF will be replaced by CRLF"、この警告は後ろ向きなのでしょうか?

2022-04-21 03:10:55

質問

環境

  • Windows 7
  • msysgit

時I git commit と表示されます。

warning: LF will be replaced by CRLF. 

この警告の尾は後方にあるのでしょうか?

Windowsでファイルを編集すると、行末が CRLF この写真のように



そして、gitはこれを次のように変更します。 LF を使用して、レポにコミットします。

ということで、正しい警告は

warning: CRLF will be replaced by LF. 

解決方法は?

<ブロッククオート

の警告を表示します。LF は CRLF に置換されます。

お使いのエディタによっては、LFを含むテキストファイルは必ずしもCRLFで保存される必要はありません。 保つ eol スタイルです。しかし、git config の設定は、それらを変更するように主張しています...。

を確認するだけです。 ここでお勧めするのは ):

git config --global core.autocrlf false

そうすることで、自動変換を回避し、なおかつ .gitattributes ファイル core.eol ディレクティブ .


windows git "LFはCRLF"に置き換わります。

この警告の尾は後方にあるのでしょうか?

いいえ:あなたはWindowsを使用しており git config ヘルプページ について言及しています。

<ブロッククオート

この設定は CRLF の行末は、リポジトリに正規化された行末がなくても、作業ディレクトリに表示されます。

"に記載されているとおりです。 LFをCRLFに置き換えるGIT "。 チェックアウト時にのみ発生するようにする (コミットではない)、と core.autocrlf=true .

       repo
    /        \ 
crlf->lf    lf->crlf 
 /              \    

で述べたように XiaoPeng 's 回答 という、その警告は同じです。

警告: (チェックアウト/他のフォルダにクローンした場合、現在の core.autocrlf の構成で、) LF は CRLF に置き換えられます。

ファイルは、あなたの(現在の)作業ディレクトリで元の行末を持つことになります。

で述べたように git-for-windows/git 1242号 :

このメッセージはまだ分かりにくいので、この問題のより良い説明を含むようにメッセージを拡張することができます。 file.json ファイルを削除して再度チェックアウトした後".

注意:Git 2.19 (2018年9月) を使用する場合、以下のようになります。 core.autocrlf , というインチキなLF はCRLF"に置き換えられます。 .


として クエイラー 正しく コメント コミット時の変換は LF のみです。

その具体的な警告 " LF will be replaced by CRLF からのものです。 convert.c#check_safe_crlf() :

if (checksafe == SAFE_CRLF_WARN)
  warning("LF will be replaced by CRLF in %s.
           The file will have its original line endings 
           in your working directory.", path);
else /* i.e. SAFE_CRLF_FAIL */
  die("LF would be replaced by CRLF in %s", path);

によって呼び出されます。 convert.c#crlf_to_git() によって呼び出されます。 convert.c#convert_to_git() によって呼び出されます。 convert.c#renormalize_buffer() .

そして、最後の renormalize_buffer() が呼び出されるだけです。 merge-recursive.c#blob_unchanged() .

で、この変換が行われると思われます。 git commit は、そのコミットがマージプロセスの一部である場合のみです。


注:Git 2.17(2018年第2四半期)では、コードのクリーンアップで説明が追加されています。

参照 コミット8462ff4 (2018年1月13日)によるものです。 トーステン・ベーガーハウゼン( tboegi ) .

(によって統合されました。 ジュニオ・C・ハマノ--。 gitster -- コミット 9bc89b1 , 2018年2月13日)

<ブロッククオート

convert_to_git(): safe_crlf/checksafe は int conv_flags になります。

を呼び出す場合 convert_to_git() は、その checksafe パラメータは は、EOL 変換 ( CRLF --> LF --> CRLF を使用します。 をきれいにラウンドトリップする。

さらに、行末を再正規化するかどうかも定義されている( CRLF --> LF )またはそのままである。

checksafeは safe_crlf の列挙とこれらの値。

SAFE_CRLF_FALSE:       do nothing in case of EOL roundtrip errors
SAFE_CRLF_FAIL:        die in case of EOL roundtrip errors
SAFE_CRLF_WARN:        print a warning in case of EOL roundtrip errors
SAFE_CRLF_RENORMALIZE: change CRLF to LF
SAFE_CRLF_KEEP_CRLF:   keep all line endings as they are


で導入されたリグレッションに注意してください。 8462ff4 (" convert_to_git() : safe_crlf/checksafe になる int conv_flags ", 2018-01-13, Git 2.17.0) に戻ると、Git 2.17サイクルで引き起こされた autocrlf を書き換えると、警告メッセージが表示されます。 を設定したにもかかわらず safecrlf=false .

参照 コミット 6cb0912 (2018年06月04日)によるものです。 アンソニー・ソッティレ ( asottile ) .

(によって統合されました。 ジュニオ・C・ハマノ--。 gitster -- コミット 8063ff9 , 2018年6月28日)