Git で LF を CRLF に置き換える 質問する

Git で LF を CRLF に置き換える 質問する

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 つにtrueunix スタイルが含まれている場合(= まれに)、     – =ファイルの 1 つにwin スタイルが含まれている場合(= ほぼ常に)、     – = – 絶対にありません。lf
autocrlfinputcrlf
autocrlffalse

この警告は何を意味していますか?

「 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.autocrlfGit のインストール時に選択され、システム全体の gitconfig ( %ProgramFiles(x86)%\git\etc\gitconfigWindows の場合 、/etc/gitconfigLinux の場合 ) に保存されます。また、次のものがあります (次の順序でカスケードされます)。

   – 「グローバル」(ユーザーごと) の 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.autocrlffalse
core.autocrlfinput

PS Git for Windows をインストールするときに何を選択すればよいですか?

Unix でプロジェクトを使用しない場合は、デフォルトの最初のオプションに同意しないでください。3 番目のオプション (そのままチェックアウト、そのままコミット) を選択します。このメッセージは表示されません。決して。

PPS: 私の個人的な好みとしては、エディター/IDE をUnix スタイルの終了を使用するように構成し、core.autocrlfに設定することですfalse

アップデート(2022)

2018年以降、gitは--再正規化必要に応じて既存の行末を修正するリポジトリ。

おすすめ記事