Windows git「警告: LF は CRLF に置き換えられます」、これは末尾が逆になっている警告ですか? 質問する

Windows git「警告: LF は CRLF に置き換えられます」、これは末尾が逆になっている警告ですか? 質問する

環境:

  • ウィンドウズ7
  • msgit の

私が するとgit commit、こう言われます:

warning: LF will be replaced by CRLF. 

この警告は末尾が逆になっていますか?
Windows でファイルを編集すると、行末は になりますCRLF。次の図のようになります。
ここに画像の説明を入力してください
そして、git はリポジトリにコミットするためにこれを に変更しますLF
したがって、正しい警告は次のようになると思います。

warning: CRLF will be replaced by LF. 

ベストアンサー1

警告: LF は CRLF に置き換えられます。

使用しているエディターによっては、LF を含むテキスト ファイルを CRLF で保存する必要がありません。最近のエディターはeol スタイルを保持できます。ただし、git 構成設定では、これらを変更するように要求されます...

単に(ここがお勧め):

git config --global core.autocrlf false

そうすれば、自動変換を回避し、.gitattributesファイルそしてcore.eol指令


Windows git 「LF は CRLF に置き換えられます」

注記:Git 2.37 (2022年第3四半期) で警告メッセージが変更されました

この警告尾は逆さまですか?

いいえ: Windowsをご利用で、git configヘルプページ言及している

CRLFリポジトリに正規化された行末がない場合でも、作業ディレクトリに行末を含める場合は、この設定を使用します。

git LF を CRLF に置き換える" の場合、これはチェックアウト時(コミット時ではない)にのみ発生しますcore.autocrlf=true

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

前述の通りシャオペン答え、その警告は次のものと同じです:

警告: (現在の構成でチェックアウトまたは別のフォルダーにクローンするとcore.autocrlf) LF は CRLF に置き換えられます。
ファイルは、(現在の)作業ディレクトリ内の元の行末を持ちます。

前述の通りgit-for-windows/git1242号:

このメッセージはまだわかりにくいと感じています。メッセージを拡張して、問題に関するより適切な説明を含めることができます。たとえば、「ファイルを削除して再度チェックアウトすると、LF は CRLF に置き換えられますfile.json」などです。

注: Git 2.19 (2018 年 9 月) では、 を使用するとcore.autocrlf「LF は CRLF に置き換えられます」という誤った警告が抑制されるようになりました


としてクエイラー正しくコメントコミット時に変換がある場合は、 のみですLF

その特定の警告「LF will be replaced by CRLF」は変換.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年6月4日)アンソニー・ソティル ( asottile)(合併者
ジュニオ・C・ハマノ -- gitster--コミット 8063ff9、2018年6月28日)

おすすめ記事