一貫性のない行末、および ascii と UTF-8 (BOM あり) のファイル エンコーディングを含む大規模な既存のリポジトリの場合...
重要なことは、現在のファイルのセットがかなり一貫していないということです。それらはエンコーディングが異なります。(UTF-16 もいくつか持っていますが、今のところは無視しましょう)。それらはファイルごとに行末が異なり、ファイル自体の行末も異なりますが、それらのほとんどは git に crlf 行末で保存されていると思われます。
ここには 2 つの主な問題があります。
1) 同じリポジトリを使用している別の人が変更を確認でき、異なるセットの変更が表示されます。行末が正規化されているため、「ファイル全体」が変更されることがあります。ファイルの一部のみが変更されている場合があります。これは、core.autocrlf が true または false に設定されているかどうかに大きく依存しているようで、.gitattributes ファイルの使用にも影響されているようです。
2) すべての人が、特定の git 構成が crlf 変換を行うように設定されているかどうか、またはテキスト エディター、IDE、または彼らが決定したツールに注意を払うことなく、ファイルを git リポジトリに送信できるようにしたいと考えています。使用する。(この動作は Windows では壊れている可能性がありますが、それを受け入れる必要があります...)
主な問題は次のとおりです。「gitk」、「git diff」、「git show」などによって表示される出力が、表示される変更に関して完全に一貫していることを確認するにはどうすればよいですか。ここでは行末についてはあまり気にしませんが、特定のコミットの「変更」がすべての開発者から見たものと同じ変更であることを確認することについては、より重要です。1 人の人が変更を見て、「すべての行が変更された」(つまり、行末が変更された) のを見て、別の人が同じ変更を見て、「3 行が変更された」と言うのは望ましくありません。
- 注: github を使用して変更を表示する人もいます。
そうは言っても、行末がどのように関係しているかを知ることに自信を持ちたいので、最終的に行末がどうなるかを知る方法を求めています。たとえば、.gitattributes で特定のファイルに「eol=crlf」を指定した場合、そのファイルはその設定で git にコミットされるということですか? その .gitattributes ファイルを設定する前にコミットされたそのファイルの以前のバージョンをチェックアウトするとどうなりますか?