1

私たちのリポジトリは を使用しLF、Git for Windows のインストールはCheckout をそのまま使用し、Unix スタイルの行末をコミットします

ここに画像の説明を入力

しかし、IDE でチェックアウトするすべてのファイルでエラーの壁が発生します。これは、サポートされていて、チェックインされたファイル (または独自の設定)を介して使用するように構成されてCRLFいるにもかかわらず、常に受信するためです。LFLF.editorconfig

.editorconfig
root = true

[*]
end_of_line = lf

すでに 2020 年であり、IDE とツールは既にLFWindows でサポートされています。

4

2 に答える 2

4

行末に影響を与える 2 つの git config 属性があります:core.autocrlfcore.eol.
以前は、core.autocrlf = trueクロスプラットフォーム プロジェクトで作業できるようにするために を使用するように言われていましたが、現在はそうではありませtrueん。

システム/IDE/ツールがサポートLFしていて、サイレント正規化なしでチーム内の他の全員と同じように使用したい場合は、オフにして行末を推測しないように構成する必要がありますが、強制的に使用する必要があります。LFlf->crlf->lfautocrlfeolnativelf

LF現在、すべてのファイル a/o repos で達成する方法は 2 つあります。

  1. ローカル マシン上のすべてのリポジトリに対してグローバルに。
  2. チェックインされた.gitattributesファイルを介したリポジトリごと。
    このファイルは、リポジトリを複製するすべてのユーザーのローカル構成をオーバーライドします。

個人的には、すべてのローカル リポジトリで使用することと、クロスプラットフォームのクロス デベロッパーの一貫性を確保することをお勧めします。


1) ローカル マシン上のすべてのリポジトリに対してグローバルに

作業ディレクトリ (ローカル リポジトリ) にいる場合:

  1. 最初にすべてをコミットします

  2. 少し妄想して、グローバルとレポの両方に設定しましょう。念のため。

    git config --global core.eol lf
    git config --global core.autocrlf false
    
    git config core.eol lf
    git config core.autocrlf false
    
  3. を除くすべての「コード」を削除します.git。依存関係、インストールされたファイル (など)、ビルド ファイル、およびgit で無視される
    ファイル も省略できます。node_modules

  4. そして最後に実行

    git reset --hard HEAD
    

物事は今うまくいっているはずです。新しくチェックされたファイルは新しい構成に従い、リモートリポジトリから複製された行末を保持する必要があります。

リモートリポジトリで末尾が混在している場合crlf lfは、実行してプッシュする必要があることに注意してください

git add --renormalize .

2) チェックインされた.gitattributesファイルを介したリポジトリごと

作業ディレクトリ (ローカル リポジトリ) にいる場合:

  1. .gitattributes次の内容でルートにファイルを作成します。

    * text=auto eol=lf
    
  2. ファイル(およびその他すべて)をコミットします

  3. 同上

  4. 同上

重要な注意: ファイルをリポジトリに導入した後、コミットをチェックアウトするだけでは既存のファイルに影響しないため、古い CRLF ファイルをまだ持っている人はステップ 3 と 4 を実行して作業ディレクトリを更新する必要があります。

git リセット ハード


ノート

または上書きするcore.autocrlf_trueinputcore.eol

https://www.git-scm.com/docs/git-config#Documentation/git-config.txt-coreautocrlf

core.autocrlf = inputUNIX システムでは優先値です。 https://stackoverflow.com/a/41282375/985454
https://stackoverflow.com/a/4425433/985454

トラブルシューティング

3 番目のオプションで Windows 用の git を再インストールします (Q のスクリーンショットのように)

そのままチェックアウト - そのままコミット ( core.autocrlf = false)

于 2020-06-24T11:42:14.813 に答える