2011-12-28 11 views
40

私はgitを初めて使いました。私はWindows上でmsysgitを使用しています。Git、リポジトリにファイルを追加するとLF - > CRLFに致命的なエラーが発生する

は、私は、コマンドgit add [folderName]を実行すると、私は応答を取得:

fatal: LF would be replaced by CRLF in [.css file or .js file] 

をし、あなたがしようとした場合、その後何も起こりませんコミット。私はLFを持っている理由だと思うので、

$ git commit 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  so01/ 
nothing added to commit but untracked files present (use "git add" to track) 

これらのCSS/JSファイルの一部はネットからダウンロードしました。 ファイルを開いてコンテンツをカット/ペーストすると、次のファイルなどでエラーが発生します。

ご協力いただければ幸いです。

編集

はfalseにcore.autocrlfを設定すると、問題を解決するようだが、私は、このオプションをfalseに設定していない多くの記事で読みました。

この状況でどのような問題が発生する可能性がありますか?

+0

Windows以外の環境にある他のユーザーとは作業していますか? –

+2

いいえ、私はappharborに置く小さなアプリケーションに取り組んでいます。これまでのところすべてが良いですが、私はそれらのオプションの違いを知りたいと思っていました。私はアプリを終了した後、私はいくつかのreasrchを行うことを計画していますが、私はすぐに解決策のためにSOを使用しますが、 – user619656

+0

さらに、autocrlfをfalseに設定する理由があります。頭痛は必要ありません。ファイルをそのままコミットしてください。 msysgitをインストールするときのデフォルト設定が最悪の選択肢になるのは残念です。 –

答えて

22

行末を操作するコードエディタを信頼してください。自動crlfはfalseにする必要があります。ソース管理があまりにもスマートにならないようにしてください。行末を変更するためにソース管理ツールを用意する必要がない場合、行末を変更しないでください。これは傷つくでしょう。

受け入れられた答えを繰り返してください: "ネイティブeolに対処しなければならない特定の処理を見ることができない限り、autocrlfをfalseのままにしておく方が良いです。" autocrlf上のセクションの最後にprogit帳からも

「はWindowsのみのプロジェクトをやって、Windowsのプログラマをしている場合は、キャリッジリターンを記録し、この機能をオフにすることができます「falseに設定値を設定することにより、リポジトリは

私が与えることができる唯一の他のヘルプは、あなたが他のルートを取るならば、そのようMSysGitにおけるCRなどの特殊文字が表示されますvim -b、およびgit show HEAD:path/to/your/file.txtに慣れるということですはgitがそれを保存した方法でファイルを表示する必要があります。

core.whitespace cr-at-eolには、パッチと差分が問題のある空白としてCRを強調表示しないように設定します。

面倒な価値はありません。そのままの状態で保管してください。

+0

自動crlfはfalseにする必要があります。< - これはウィンドウには当てはまりません。 – prusswan

+2

はい、ウィンドウに当てはまります。繰り返しますが、autocrlf = false以外は何もしないでください。私は過去4年間Windows/.netの複数のチームでこれをやってきました。あなたは落ちて傷つけるために他のものを使うことができます。最終的にautocrlfをfalseに設定します。 –

+3

windows/.netに特有の逸話的な証拠が他のものよりも重要であり、http://progit.org/book/ch7-1.htmlで推奨されているものはなぜですか? – prusswan

6

内部でファイルを保存するようにGitを設定しているため、crlfcore.eolの設定があるため、問題が発生している可能性があります。ファイルを追加すると、Gitはそれを内部形式に変更することを警告します。

Gitはlf行末で最もうまく機能するので、可能であればいつもcore.eol = lfと連動します。 core.autocrlfを使用する際

これはあなたがまたcore.safecrlfを使用したい場合があり、Why should I use core.autocrlf=true in Git?

を説明する必要があります。設定の詳細については、git config --helpを参照してください。

+0

あなたがリンクしている回答は次のように述べています:「ネイティブeolに対処しなければならない特定の治療法が見られる場合を除き、autocrlfをfalseにしておく方が良い。 –

+0

なぜ私はこれのdownvoteを受け取ったのか分かりませんか?私は何かを逃したか? @AdamDymitrukそれはまた、それが使用できるいくつかのケースを示します。私はそれがなぜそこにあるのか知ることは有益だと思います(もし私がそれを使わないとすれば、なぜ私はそれを設定できますか?) – m0tive

24

これは非常に新しいので、core.autocrlfをfalseに設定することはあまり意味がありませんでした。他の初心者の場合は、.gitフォルダのconfigファイルに移動し、[core]見出しの下に、

[core] 
    autocrlf = false 

を追加してください。

+11

またはコマンドラインから... git config core.autocrlf false – petercoles

0

フォーマットのgit自動検出はかなりうまく機能します。したがって、core.autocrlf=trueはWindows上で本当に良いアイデアです。言っgit config --global core.safecrlf=false

はgitのに言う:ねえ、Windowsの行末(CRLF)に私の間違っ行末(LFのみ)に変換し、それを気にしないでください。

したがって、実際にはcore.safecrlfを無効にする必要があります。

回答時間:https://stackoverflow.com/a/15471083/873282

+0

@downvoters:この回答をdownvoteする理由を説明してください。これは、(i)他の人がなぜこの回答に投票がないのかを理解し、(ii)回答を改善するのに役立ちます。 – koppor