web-dev-qa-db-ja.com

Gitファイルをコミットしようとしているが、:: fatal:LFは<repoの一部のファイル>のCRLFに置き換えられます

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

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

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

core.autocrlf true

第三に、 .gitattributes file

そのため、ファイルがCRLFを持つように強制する必要があります。

私が理解していないのは、それがFATALと言っており、継続を妨げているということです。警告?承知しました!私がやろうとしていることを知っていますか?私がやります!

静かに変換し、STFUに変換したいだけです。

あるいは、ブロックするように強制されている場合、リポジトリ内のすべてのファイルをCRLFに更新する方法がありますので、この警告は失われる可能性がありますか?

これらのリポジトリはプライベートであるため、Windows + Visual Studioの外部で開発されることはありません。

誰でもこのスレッドをautocrlf TRUE vs autocrlf FALSE宗教戦争。

56
Pure.Krome

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

"_git config_" mangeページ から:

core.safecrlf

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

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

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

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

私は_.gitattributes_ファイルのみ(使用している_core.eol_設定)でeolを強制する正確なファイルまたはファイルの種類を特定し、autocrlfをfalseのままにします。

混合eolを含むテキストフィールドの場合、この ブログ投稿 は、たとえば次のことを示唆します。

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

  1. 致命的な問題が発生しているファイルを開きます。
  2. [_Edit -> EOL Conversion_]をクリックしてから、[Windows形式]またはコミットの問題がある任意の形式を選択します。

警告、Git 2.17または2.18を使用している場合: 8462ff4 ( "convert_to_git():_safe_crlf/checksafe_は_int conv_flags_"に導入された回帰、2018-01-13 、Git 2.17.0)Git 2.17サイクルに戻ると、autocrlfの書き換えにより警告メッセージが生成されました_safecrlf=false_の設定にもかかわらず。

commit 6cb0912 (2018年6月4日)by Anthony Sottile(asottile を参照してください。
J浜野順夫-gitster- in コミット8063ff9 、2018年6月28日)

67
VonC
git config --global core.safecrlf false
23
Snowcrash

これにより、crlfの致命的な警告が無効になります。

git config core.autocrlf false
git config core.safecrlf false
8
sanjeet bisht

リポジトリはプライベートなので、git-config このような:

git config --global core.autocrlf false

これで問題が解決します。さらに質問がある場合は、 《 Pro git》

Windowsのみのプロジェクトを実行するWindowsプログラマーの場合、この機能をオフにできます。 config value tofalse$ git config --global core.autocrlf false

ただし、共同作業を行う場合は、以下を実行する方が適切です。

  1. 追加 .gitattributesGithubヘルプ-行末の処理 が役立ちます。
  2. git config --global core.safecrlf true
    • windows:git config --global core.autocrlf true
    • macまたはlinux:git config --global core.autocrlf input

詳しくは Git docs-git config をお読みください。

4
Wade

git config --global core.autocrlf falseは、CRLFを使用してファイルをチェックインしますが、これは使用されません。

Windowsでは、core.autocrlf trueのgitはLFおよびcore.autocrlf inputのファイルはCRLFを嫌います。

したがって:core.autocrlf trueおよびLF core.autocrlf inputのファイル(またはそれらをCRLFに変換)でCRLFファイルをコミットします。

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

1
GKislin

.gitattributesファイルでは、使用

*.h text=auto
*.cpp text=auto
*.txt text=auto

https://git-scm.com/docs/gitattributes に文書化されています。

0
MyGeertRo