68

git でテキスト ファイルをバイナリとして扱う方法を尋ねる質問をいくつか見ましたが、その逆はまだ見ていません。

テキスト ファイルをバイナリとして扱うという git の選択を変更するにはどうすればよいですか? 一部の構成文字列で、構成パラメーターの部分を区切るために EOT と ETX が使用されているテキスト ファイルがあります。

たとえば、ソース コードには次のような行が含まれています。

INPUT 'ScrollRemote[EOT]no[ETX]NumDown[EOT]0[ETX]CalcWidth[EOT]no[ETX]MaxWidth[EOT]80[ETX]FetchOnReposToEnd[EOT]yes[ETX].....'

行の変更の差分を確認できるように、このファイルをバイナリではなくテキストとして扱いたいと思います。

4

3 に答える 3

82

ファイルが実際に Git リポジトリ内に格納される方法は、表示されるときの処理方法とは関係ありません。したがって、git diffプログラムは、2 つのファイルを比較するように求められると、まずリポジトリから両方の完全なファイルを取得し、次にそれらに対して差分アルゴリズムを実行します。

通常、git diffファイル内の印刷不可能な文字を検索しファイルがバイナリ ファイルである可能性が高いと思われる場合は、違いを表示することを拒否します。その根拠は、バイナリファイルの差分は人間が読める可能性が低く、表示されると端末が混乱する可能性があるためです。

ただし、オプションgit diffを使用して、常にファイルをテキストとして扱うように指示でき--textます。diffこれを 1 つのコマンドで指定できます。

git diff --text HEAD HEAD^ file.txt

.gitattributes以下を含むファイルを設定することで、Git が常にこのオプションを使用するようにすることができます。

file.txt diff

ここでのdiff属性は次のことを意味します。

属性が設定されているパスdiffは、NUL など、通常はテキスト ファイルに表示されないバイト値が含まれている場合でも、テキストとして扱われます。

于 2013-02-21T17:57:06.390 に答える
6

Git Attributesを参照してください。特定のファイル拡張子をテキストとして扱うように指定することで役立つ場合があります。

于 2013-02-20T22:28:52.890 に答える