1. ホーム
  2. git

[解決済み] なぜGitでcore.autocrlf=trueを使うべきなのでしょうか?

2022-03-14 21:15:12

質問

Windows と OS X の両方からアクセスできる Git リポジトリを持っていますが、すでに CRLF 行終端を持つファイルがいくつか含まれていることが分かっています。私が知る限り、これに対処する方法は2つあります。

  1. セット core.autocrlf から false をあらゆる場所に配置します。

  2. 説明書に従ってください こちら (GitHubのヘルプページでも紹介されています) を使って、リポジトリをLF改行のみ含むように変換し、その後に core.autocrlf から true をWindowsで、そして input をOS X上で実行します。この方法の問題点は、もし私がリポジトリに何らかのバイナリファイルを持っている場合、その:

    1. は、gitattributesでバイナリとして正しくマークされていません。
    2. がCRLFとLFの両方を含むことがある。

    が破損してしまいます。私のリポジトリにそのようなファイルが含まれている可能性があります。

では、なぜGitの改行コード変換をオフにしてはいけないのでしょうか?ウェブ上では、行末を変換するために core.autocrlf をオフにすると問題が発生しますが 具体的な 今のところわかったのは、kdiff3がCRLFの終端を処理できないこと(私には関係ありません)と、一部のテキストエディタに行末の問題があること(これも私には関係ありません)くらいでしょうか。

このリポジトリは私の会社の内部用なので、autocrlfの設定や行末の要件が異なる人たちと共有することを心配する必要はないです。

その他、私の知らないところで、改行コードをそのままにしておくと何か問題があるのでしょうか?

どのように解決するのですか?

を設定する唯一の具体的な理由は autocrlf から true があります。

  • 避ける git status としてすべてのファイルを表示します。 modified これは、Unix ベースの EOL Git リポジトリを Windows リポジトリにクローンする際に自動的に EOL 変換が行われるためです ( 83号 など)
  • そして あなたのコーディングツールは、何らかの形で ネイティブ EOLスタイルがファイル内に存在すること。
    • 例えば、ネイティブEOLを検出するようにハードコードされたコードジェネレータの場合
    • ネイティブEOLを検出するための正規表現またはコードセットを持つ他の外部バッチ(あなたのレポの外部)
    • Eclipseのプラグインの中には、プラットフォームに関係なくCRLFを含むファイルを生成するものがあると思いますが、これは問題です。
    • メモ帳.exeでコードを書くと( Windows 10 2018.09+を使用していない限り、メモ帳は検出されたEOL文字を尊重します。 ).

という具体的な治療法が見えてこない限り しなければならない ネイティブEOLに対応するため。 退出 autocrlf から false ( git config --global core.autocrlf false ).

なお、このコンフィグは ローカル というのも、レポからレポへ設定がプッシュされないからです。

もし、そのレポをクローンしているすべてのユーザーに同じ設定をさせたい場合は、"をチェックしてください。 最適なのは CRLF gitでの処理戦略? を使用しています。 text 属性で .gitattributes ファイル .

*.vcproj    text eol=crlf
*.sh        text eol=lf


注意:git 2.8 (2016年3月) からは、マージマーカーが もはや は、CRLF ファイルに混合行末 (LF) を導入します。
"を参照してください。 Git の "<<<<< HEAD" マージ行で CRLF を使用するようにする。 "