私はWindowsを使用しています。に設定core.eol
しましたnative
。に設定core.autocrlf
しましたfalse
。CRLF行末を含むファイルから始めたと確信しています。それらはすべて、、、.clj
または.md
のいずれか.gitignore
です。私はそれらをコミットしました。次に、次のコミットで次のことをコミットしました.gitattributes
* text=auto
*.bat text
*.bib text
*.clj text
*.java text
*.md text
*.tex text
*.txt text
*.jpg binary
*.pdf binary
*.png binary
そのコミットでは、差分はすべてのファイルのすべての行が変更されたと述べています(行末は私が想定しています)。
に設定core.eol
するとnative
、作業ツリーで CRLF が取得されると思いましたが、そうではありません (ファイルのみで.gitattributes
、 を含む他のファイルはありません.gitignore
)。Vimを使っていたので、今まで気づきませんでした。
gitattributes コミットの diff が見苦しいと思ったので、 と に異なる値をcore.autocrlf
設定してみました。core.eol
たとえば、true
と にcrlf
それぞれ設定して、 を実行しgit filter-branch --tree-filter HEAD
ました。エラーが発生しましerror: core.autocrlf=input conflicts with core.eol=crlf
た。で確認したgit config --get core.autocrlf
ところ、 が返されtrue
ました。では、なぜエラーが発生するのですか?
私はとても混乱しています。私が欲しいのは、作業ツリーの CRLF 行末と、行末を変更しないコミットです。つまり、最初からコミットすると LF であり、そのままです。どうすればそれを達成できますか?