変更されたファイルをコミットしようとすると、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
宗教戦争。
致命的なエラーではなく警告のみが必要な場合は、_core.safecrlf
_を「警告」に設定することをお勧めします。
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 ++がインストールされている場合は、次の手順に従ってください。
- 致命的な問題が発生しているファイルを開きます。
- [_
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日)
git config --global core.safecrlf false
これにより、crlfの致命的な警告が無効になります。
git config core.autocrlf false
git config core.safecrlf false
リポジトリはプライベートなので、git-config
このような:
git config --global core.autocrlf false
これで問題が解決します。さらに質問がある場合は、 《 Pro git》 :
Windowsのみのプロジェクトを実行するWindowsプログラマーの場合、この機能をオフにできます。 config value tofalse:
$ git config --global core.autocrlf false
ただし、共同作業を行う場合は、以下を実行する方が適切です。
.gitattributes
、 Githubヘルプ-行末の処理 が役立ちます。git config --global core.safecrlf true
git config --global core.autocrlf true
git config --global core.autocrlf input
詳しくは Git docs-git config をお読みください。
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/ )
.gitattributesファイルでは、使用
*.h text=auto
*.cpp text=auto
*.txt text=auto
https://git-scm.com/docs/gitattributes に文書化されています。