67

変更したファイルをコミットしようとすると、TortoiseGit で次のエラー メッセージが表示されます。

fatal: LF would be replaced by CRLF in <some file in the repo>

さて、通常のLF vs CRLF答えを得る前に、私は議論が何であるかを知って理解しています. 次に、グローバル設定を次のように設定しました。

core.autocrlf true

第三に、私は.gitattributesファイルを持っています。

だから私は-したい-またはファイルが強制的にCRLF.

私が理解できないのは、それが言ってFATAL、私が続けるのを妨げているということです. 警告?もちろん!私が何をしようとしているのか知っていますか?そうです!

サイレントに変換して STFU にしたいだけです

または、強制的にブロックされた場合、レポ内のすべてのファイルを更新してCRLF、この警告が発行されないようにする方法はありますか?

これらのリポジトリは非公開であるため、Windows + Visual Studio 以外で開発されることはありません。

どうすれば続行できますか?

4

6 に答える 6

76

core.safecrlf致命的なエラーではなく警告のみが必要な場合は、「警告」に設定することをお勧めします。

" git config" 管理ページから:

core.safecrlf

true の場合、行末変換がアクティブなときに CRLF の変換が元に戻せるかどうかを git がチェックします。Git は、コマンドが作業ツリー内のファイルを直接または間接的に変更するかどうかを確認します。
たとえば、ファイルをコミットした後に同じファイルをチェックアウトすると、作業ツリーに元のファイルが生成されます。これが core.autocrlf の現在の設定に当てはまらない場合、git はファイルを拒否します
この変数は "warn" に設定できます。この場合、git は元に戻せない変換についてのみ警告しますが、操作は続行します。

CRLF 変換では、データが破損する可能性がわずかにあります。
有効にすると、git はコミット時に CRLF を LF に変換し、チェックアウト時に LF を CRLF に変換します。
コミット前に LF と CRLF が混在するファイルは git で再作成できません
テキスト ファイルの場合、これは正しいことです。行末を修正して、リポジトリに LF 行末のみが含まれるようにします。
ただし、誤ってテキストとして分類されたバイナリ ファイルの場合、変換によってデータが破損する可能性があります

このような破損を早期に認識した場合は、変換タイプを で明示的に設定することで簡単に修正できます.gitattributes
コミットした直後は、作業ツリーに元のファイルが残っており、このファイルはまだ破損していません。このファイルがバイナリであり、git がファイルを適切に処理することを明示的に git に伝えることができます。

残念ながら、行末が混在するテキスト ファイルをクリーンアップするという望ましい効果と、バイナリ ファイルを破損するという望ましくない効果を区別することはできません。
どちらの場合も、CRLF は元に戻せない方法で削除されます。テキスト ファイルの場合、CRLF は行末であるため、これは正しいことですが、バイナリ ファイルの場合、CRLF を変換するとデータが破損します。

正確なファイルまたはファイルの種類を特定して、eol を.gitattributesファイルのみ (設定済みの設定で) に強制し、 falsecore.eolのままにすることを好みます。autocrlf

eol が混在するテキスト フィールドの場合、このブログ投稿では、たとえば次のことを提案しています。

コンピュータに Notepad++ がインストールされている場合は、次の手順に従ってください。

  1. 致命的な問題が発生しているファイルを開きます。
  2. クリックしEdit -> EOL Conversionてから、Windows フォーマットまたはコミットに問題があるものを選択します。

Git 2.17 または 2.18 を使用している場合の警告: 8462ff4で導入されたリグレッション(" convert_to_git():safe_crlf/checksafeint conv_flags"、2018-01-13、Git 2.17.0) が Git 2.17 サイクルに戻ったため、設定にもかかわらずautocrlf、書き換えによって警告メッセージが生成されました。safecrlf=false

Anthony Sottile ( )によるコミット 6cb0912 (2018 年 6 月 4 日)を参照してください。( 2018 年 6 月 28 日コミット 8063ff9Junio C Hamanoによってマージされました)asottile
gitster

于 2013-03-18T06:45:16.870 に答える
35
git config --global core.safecrlf false
于 2015-11-25T18:33:05.337 に答える
2

git config --global core.autocrlf false慣れていない CRLF でファイルをチェックインします。

core.autocrlf trueWindows では、 git では LF のファイルが好きでcore.autocrlf inputはなく、CRLF が好きではないことに気付きました。

したがって、CRLFファイルcore.autocrlf trueとLFファイルをコミットしますcore.autocrlf input(またはCRLFに変換します)。

通常、LF を含むファイルはコード ジェネレーターによって自動生成されます (例: https://start.spring.ioまたはhttp://yeoman.io/ ) 。

于 2016-01-11T21:42:02.330 に答える