web-dev-qa-db-ja.com

gitのバイナリファイルの選択をテキストに上書きします

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].....'
50
RonaldB

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

通常、git diffはファイル内の非印刷可能文字を探し、それがlooksである場合、ファイルはバイナリファイルである可能性があります。違いを示すことを拒否します。その理由はバイナリファイルの差分である可能性が高く、人間が読める可能性は低く、表示されるとおそらく端末を台無しにします。

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

git diff --text HEAD HEAD^ file.txt

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

file.txt diff

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

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

66
Greg Hewgill

Git Attributes を見てください-特定のファイル拡張子をテキストとして扱うように指定することで、あなたを助けることができるかもしれません。

テキストファイルを比較またはマージしようとしていて、gitがバイナリファイルであると言っている場合、エンコードが異なる場合があります(たとえば、UTF-8とANSI)。 この投稿で答えた を参照してください。

2
deadlydog