行末に影響を与える 2 つの git config 属性があります:core.autocrlf
とcore.eol
.
以前は、core.autocrlf = true
クロスプラットフォーム プロジェクトで作業できるようにするために を使用するように言われていましたが、現在はそうではありませtrue
ん。
システム/IDE/ツールがサポートLF
していて、サイレント正規化なしでチーム内の他の全員と同じように使用したい場合は、オフにして行末を推測しないように構成する必要がありますが、強制的に使用する必要があります。LF
lf->crlf->lf
autocrlf
eol
native
lf
LF
現在、すべてのファイル a/o repos で達成する方法は 2 つあります。
- ローカル マシン上のすべてのリポジトリに対してグローバルに。
- チェックインされた
.gitattributes
ファイルを介したリポジトリごと。
このファイルは、リポジトリを複製するすべてのユーザーのローカル構成をオーバーライドします。
個人的には、すべてのローカル リポジトリで使用することと、クロスプラットフォームのクロス デベロッパーの一貫性を確保することをお勧めします。
1) ローカル マシン上のすべてのリポジトリに対してグローバルに
作業ディレクトリ (ローカル リポジトリ) にいる場合:
最初にすべてをコミットします
少し妄想して、グローバルとレポの両方に設定しましょう。念のため。
git config --global core.eol lf
git config --global core.autocrlf false
git config core.eol lf
git config core.autocrlf false
を除くすべての「コード」を削除します.git
。依存関係、インストールされたファイル (など)、ビルド ファイル、およびgit で無視される
ファイル
も省略できます。node_modules
そして最後に実行
git reset --hard HEAD
物事は今うまくいっているはずです。新しくチェックされたファイルは新しい構成に従い、リモートリポジトリから複製された行末を保持する必要があります。
リモートリポジトリで末尾が混在している場合crlf
lf
は、実行してプッシュする必要があることに注意してください
git add --renormalize .
2) チェックインされた.gitattributes
ファイルを介したリポジトリごと
作業ディレクトリ (ローカル リポジトリ) にいる場合:
.gitattributes
次の内容でルートにファイルを作成します。
* text=auto eol=lf
ファイル(およびその他すべて)をコミットします
同上
同上
重要な注意: ファイルをリポジトリに導入した後、コミットをチェックアウトするだけでは既存のファイルに影響しないため、古い CRLF ファイルをまだ持っている人はステップ 3 と 4 を実行して作業ディレクトリを更新する必要があります。
ノート
または上書きするcore.autocrlf
_true
input
core.eol
https://www.git-scm.com/docs/git-config#Documentation/git-config.txt-coreautocrlf
core.autocrlf = input
UNIX システムでは優先値です。
https://stackoverflow.com/a/41282375/985454
https://stackoverflow.com/a/4425433/985454
トラブルシューティング
3 番目のオプションで Windows 用の git を再インストールします (Q のスクリーンショットのように)
そのままチェックアウト - そのままコミット ( core.autocrlf = false
)