web-dev-qa-db-ja.com

すべてのクローン/マシンでGitの行末(CRLFからLF)を無効にする方法は?

fromotherposts を収集できるため、Gitの行末の正規化には長所と短所があります。特定のWindows専用プロジェクトが1つあり、そこで行うべき最善の方法は、行末の正規化を完全に無効にすることです。つまり、すべての改行(ほとんどがCRLF)をそのまま残し、gitでそれらをLFに正規化するのではなく、舞台裏でのみ行い、その変更がすべてに影響するようにします。すべてのマシン上のリポジトリのクローン。質問はそれを行う最も効果的な方法です。

Gitの行末の正規化に関するほとんどの議論は、core.autocrlf、そしてcore.autocrlf=false。ただし、これはgit-config設定であり、マシンごとに個別に設定する必要があると思います。 trueの場合、特に msysgit インストーラーがcore.autocrlf=true

64
Chris

各マシンで個別にcore.autocrlfを設定する必要がないようにする最良の方法は、単一行を含むリポジトリに.gitattributesファイルをチェックすることです

* -text

または、Gitの古いバージョンを使用している場合

* -crlf

これはGitに、すべてのパス(したがって*)に対して、行末の正規化を試みてはならないことを伝えます。私が知る限り、これには他の副作用はないはずです。特に、diffの生成方法(これには個別の属性diff/-diffがあります)またはマージの処理方法(これには個別の属性merge/-mergeがあります)を変更しないでください。

詳細については、次のリソースをお勧めします。

  1. Gitattributesのドキュメント(git help attributesまたは オンラインコピー )には、行末の正規化がどのように機能するかと、さまざまな属性の特定の効果の両方が詳細に説明されています。 (おそらく最も関連するのは、textcrlfdiffmerge、およびbinaryです。)
  2. Gitメーリングリストスレッド 「text」属性は、行末の正規化動作を指定するためのonlyですか、それともより広い意味を持ちますか) ? (2012年3月30日)。さまざまな属性の意味を拡張し、-textが単に「これはバイナリファイルです」という意味ではないことを明確にします。
109
Chris