私は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 であり、そのままです。どうすればそれを達成できますか?