2013-06-01 5 views
52

私はgitを初めて使いました。そして、私は行末について多くのことを読んでいました。 gitがそれらをどのように扱うかをよく読んでいます。私はWindowsのところにいる。 を.gitattributesというファイルにして、たとえば* .txtをテキストに設定しました。git:safecrlfを無効にしないで「警告:CRLFはLFに置き換えられます」を取り除くにはどうすればよいですか?

警告:CRLFはwhatever.txt

にLFに置き換えられます。しかし、私はそれを知っている私は、.txtファイルをコミットすると は、私は警告を取得します。私はその警告は必要ありません。テキストファイルの末尾にある の行を置き換えることは、私が欲しいものです。今

、falseにsafecrlfを設定すること が消えて警告を行いますが、safecrlfためのマニュアルは読み:行末変換がアクティブなときにCRLFを変換する場合

をtrueの場合、gitのチェックを作るには、 可逆的です。 Gitは、 コマンドが作業木のファイルを直接 に変更するか間接的に変更するかを確認します。たとえば、ファイルをコミットしたあとに が同じファイルをチェックアウトすると、元のファイル がワークツリーに出力されます。現在の core.autocrlfの設定に該当しない場合、gitはファイルを拒否します。

これから、safecrlfは良い考えのようです。 しかし、safecrlfをtrueに設定するのはなぜですか? は私のテキストファイルについて私に警告します。 これらは別の問題です - テキストファイルの警告と、可逆の場合は のチェックです。実際、gitは私の ファイルを拒否しません。

テキストファイルの警告を取り除き、まだ safecrlfに設定することはできますか?または私は何かを誤解していますか?

+1

ファイルがまだウィンドウのスタイルファイルに変換されていないのはなぜですか?私は、この警告はgitが何らかの方法でファイルを変更したことを伝えているという点で良い警告だと感じています。本当の解決策は、gitがそれを変更しなければならない状態にあるファイルを持っていません。中央リポジトリからクローンを作成した場合、他の人に危険なことをしている可能性があります。 – cforbish

+0

cforbish私はそれがWindowsスタイルのファイルだと思います。それにはCRLFがあり、代わりにLFエンディングでコミットされます。しかし私はそれを知っていた。 – oskarkv

+0

oskarkv誤解をおかけして申し訳ありません。 vim/gvimを使用していますか?もしそうなら、 ':set ff = unix'でファイルをLinuxスタイルのファイルにして、警告を避けることができます。これは実際にファイルを変更するので、 ':w'にする必要があります。 – cforbish

答えて

9

することができますあなたの.gitattributesで:

# normalize text files to use lf 
text eol=lf 

# except these which we want crlf 
*.txt eol=crlf 
+0

あなたはまた、差分がどのように行われたかで楽しいことを行うことができます。 '* .cs eol = crlf diff = csharp' –

+0

またはマージ:' * .csproj merge = union' –

+2

それは私の質問に答えません。 – oskarkv

13

は、私の知る限り、falsecore.safecrlfを設定すると、その警告をオフにする唯一の方法です。

safecrlfは、通常、属性が正しく設定されている場合は不要です。 safecrlfのポイントは、であるファイル内の正規化が、にリポジトリ内に混在した(または非LFの)行末を持つことが想定されることを防ぐことです。 core.autocrlfとの組み合わせでは本当に便利です(自動推測では何も破壊できないことを確認してください)。.gitattributesで独自の属性を設定している場合は、すべて無効にする必要があります。

4

あなたの質問に対する短い答えはいいえです。

ので、基本的にコア。safecrlfコントロール "警告レベル" を設定:

  • 偽 - 警告
  • 真を進める - -
  • は警告する警告なしに進めるので

を続行しないでください、あなたはそのオプションを選択する必要がありますあなたに最も適しています。

関連する問題