0

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

4

2 に答える 2

2

私もWindowsを使用しています。私はGitを使用しています。私が選んだエディタは Notepad2です

この設定で、Notepad2 のデフォルトの行末を に変更しましたLFご覧のとおり、 Git EOL 設定を変更する必要はありませんでした。

現在、ローカルとリモートの両方で、私のファイルLFはシンプルで適切に使用されています。

于 2013-07-06T05:41:22.827 に答える