環境:
- ウィンドウズ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/git
1242号:
このメッセージはまだわかりにくいと感じています。メッセージを拡張して、問題に関するより適切な説明を含めることができます。たとえば、「ファイルを削除して再度チェックアウトすると、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日)