web-dev-qa-db-ja.com

git autocrlf設定の決定的な推奨事項

私はWindows、Mac OS X、Linuxを日常的に使用しています。私はこれらすべての環境でgitを使用しています。行末にさまざまな選択肢を持つ人々が使用するリポジトリから取得しています。

私の状況でcore.autocrlfを設定するための決定的な推奨事項はありますか?

46
rbellamy

これと同様に、 SO質問 をfalseに設定することをお勧めします。

(エディターで)eolの変更を回避できる場合は、変更されていないeol(つまり、「見つけたとおり」)で作業をプッシュバックするのが最善です。

35
VonC

これらの議論でしばしば言及されない1つの問題:Windows(たとえばcygwin)でシェルスクリプトを開発し、CRLF(autocrlf = false)でそれらをコミットすると、役に立たないエラーメッセージのある* nixボックスでクラッシュします。 (他のスクリプト言語でも同様のケースがあるかもしれません。)30分頭を掻いた後、覚えて、小さなラスカルをdos2unixします。混合環境(WindowsからLinuxサーバーにデプロイするなど)で作業していて、autocrlfを絶対にfalseに設定したい場合は、すべてのWindowsエディターがunix(lf)の行末を使用していることを確認してください。それ以外の場合は、autocrlfをinput(およびpray)に設定します。 21世紀のWindowsプログラムのほとんどは1980年代初頭のラインプリンターCRがなくても快適なので、とにかく行末をLF(unix)に設定することをお勧めします。

15
John Broglio

GITは、同一テキストを持つ2つのテキストファイルに共通のSHA1を持ちませんが、バイナリ表現内の異なる行末(EOL)メカニズム。コンテンツはblobとして保存されます。これは再利用別の同一コピーがリポジトリにデポジットされた場合(スペース節約!)

(the)GIT(デザイナー)が取るデフォルトの選択は、可能な場合は常に* nixスタイルのEOL文字(LFのみ)を使用することです。これにより、同じテキストに対してcontentで同じSHA1が得られます。 (おそらく重要な考慮事項;-)

コンテンツ/ブロブはユーザーの元のEOLの選択を覚えていないので(おそらく、遠いリポジトリにある可能性があることに注意してください)、Gitは元のユーザーのファイルを再作成する方法について(オプションに基づいて)推測する必要があります(CRLFでしたか、それとも単にLF)あなた(とあなたのツール)が使用できる方法で。

通常の推奨事項は、ローカルで各ユーザー(a)がblobにコミットするときに* nix LF末尾に変換することです(したがって、すべてに共通のSHA1 blob名が表示されます)(a/k/a正しいこと) )、および(b)再作成オプションをローカルシステム設定にローカルで設定します(例:* nix(LF)またはWindows(CRLF)など)。

ユーザーのローカル標準をいくつか設定し、1つの大きな「EOL/LF/CRLF&空白文字修正コミット」を用意すれば、大丈夫です(さらに、新しいユーザーのトレーニング再トレーニング)

また、各ユーザーが共通の空白調整設定を使用していることを確認して、タブとスペース、末尾の空白が原因でdiff不都合が発生しないようにすることもできます。

13
Philip Oakley