2009-10-21 43 views
46

Gitをセットアップしているので、矛盾した行末をコミットしません。その問題は、たとえファイルではないにもかかわらずファイル全体が変更されたように見えることです。これらのファイルに行末がローカル側で固定されるようにするには何を入力しますか?Git "LFがCRLFに置き換えられる"という警告が出る

# git checkout dev 
M src/au/policy/dao/EmailQueue.java 
M src/au/policy/dao/EmailQueueFactory.java 
M src/au/policy/dao/PolicyPublisher.java 
Already on 'dev' 

# git diff 
warning: LF will be replaced by CRLF in src/au/policy/dao/EmailQueue.java 
warning: LF will be replaced by CRLF in src/au/policy/dao/EmailQueueFactory.java 
warning: LF will be replaced by CRLF in src/au/policy/dao/PolicyPublisher.java 

これは私が、私はこの問題とは別に意図したものであるようです私のGitの設定ファイルに追加するものです:私は考えることができる

autocrlf = true 
+0

問題のファイルを削除して何らかの形で再チェックするのは可能でしょうか? – corydoras

+0

はい、リンクの終了以外の違いがない場合は、問題のファイルを削除して再確認してください。 –

+0

関連するが、必ずしも重複する質問ではない:[gitをLRLとCRLFで置き換える](http://stackoverflow.com/questions/1967370/git-replacing-lf-with-crlf)。 –

答えて

16

あなただけ削除することができ、再チェックアウト、このようなインデックスから問題のファイル:

rm <files> 
git checkout -- <files> 

それとも、彼らは唯一の変更されたファイルがある場合(このコマンドに注意してください)、あなたはスクリプトそれを好むことができますこの:あなたが少しより安全なパイプを使用することができますが、あなたはどのような場合には、あなたのファイル名に空白などの区切り文字を持っているように見えませんGNUシステムで

git diff --name-only --diff-filter=M | xargs rm -- 
git checkout -- . 

git diff -z --name-only --diff-filter=M | xargs -0 rm -- 
24

だけの事はcore.safecrlfがに設定されているかどうかをチェックすることですwarn

git config --get core.safecrlf

私は可能な値はtruefalse、およびwarnあると思いfalseに設定すると警告が解決されると思いますが、それは良い考えではないかもしれません。

+0

これをfalseに設定しました。ありがとう! –

+1

これはおそらくメッセージを隠しているだけですが、cr/lfの変更の影響はそのまま残ります。 –

+1

'safecrlf'を' false'に設定すると、バイナリファイルが壊れる可能性があります。そのため、デフォルトでは 'warn'になっています。 – Walf

60

あなたは(私が正しくあなたの問題を理解していれば)core.autocrlf設定変数を変更した場合に発生する可能性があります。

あなたはクリーンな状態にある場合、すなわち直後にコミットし、あなたがuncomitted変更を持っていない、再チェックアウトとインデックスはトリックを行う必要があります削除を余儀なく:

以下のコマンドをgit reset --hard HEAD意志を最新のコミットを指し示すように現在のブランチを作成すると、未コミットのコードはすべて失われます。 、私が思うに、CRLF設定に従うようにするために、両方の作業領域ファイル、およびインデックス(ステージング領域)を同期することを

$ rm .git/index 
$ git reset --hard HEAD 

コードをコミットするか、バックアップを取るようにしてください。

+3

あなたは明らかにあなたのgitを知っている、私のために素晴らしい仕事。ありがとう!本当に!どうもありがとうございました! –

+0

はこれを受け入れられた回答とみなすべきです。うまく働いた@jakub –

2

はこれを試してみてください、それが私の仕事:

cd src/au/policy/dao 
dos2unix 

を他のファイルがそのフォルダにある場合、あなたは次のようにそれを破ることになるでしょう(それ以外の場合は、すべての上にそれをしようとしますしばらく時間がかかる可能性のあるサブディレクトリ)内のファイル:

cd src/au/policy/dao 
dos2unix EmailQueue.java 
dos2unix EmailQueueFactory.java 
dos2unix PolicyPublisher.java 

それは私のマシン上で本当に速い走り、行末のすべてを固定し、それはこれらのその他の修正のいくつかより少し単純で簡単です。

+0

は私のために働かない。 – luckytaxi

31

新しいXcodeプロジェクトを作成するときにこの問題が発生しました。 この問題に対する私のソリューション:

ターミナル書き込みで

$: git config --global --edit 

次にGitの設定ファイルの変更でsafecrlfへ。私の設定:

[core] 
    autocrlf = input 
    safecrlf = false 

私はgitがこれのためのコマンドラインツールを持っているが、彼らは私のために働いていない知っている。 そして、Xcodeは問題なくgit reposを作成します。

+2

@Andreiエディタとして[vim](http://www.vim.org/)を使用している可能性が高いので、エスケープを押して入力モードを終了し、 ':wq'を入力して保存して終了します。 – GP89

+0

"git version 1.8.1.msysgit.1" windows 7(git bash)で、私のために働いた唯一の解決策、他のすべてが失敗しました。 –

関連する問題