2

git diffタブ文字を含むインデント用のタブを含むコード ベースの変更を見ると、多くのスペースに置き換えられます。でパッチを見るときも同じことが起こりますgit showgit format-patch結果のファイルを使用して見ると、catすべて問題ないようです。

これらのコマンドは、文字を置き換えることによって壊れた機械可読なパッチを表示するので、何が起こっているのか、そしてこれが起こらないようにするにはどうすればよいのか疑問に思います.

4

1 に答える 1

3

どちらの git コマンドも、制御文字を追加してバイナリ ファイルのカラー出力と外部テキスト変換フィルターを有効にする以外は、出力内の文字を変更しません (特に有効になっている場合)。ただし、出力は通常、ページャーアプリケーションを介してパイプされます。多くの Linux システムでは、デフォルトのページャーはlessであり、タブの代わりになります! この動作は、差分出力をファイルにパイプするか、別のアプリケーションを介して簡単にテストできます。たとえばgit diff | cat、ページングが原因である場合は、タブをいじらず、タブを表示する必要があります。

ただし、一部の端末エミュレーターもこれを行う可能性があり、パイプスルーcatはタブの代わりにスペースを「表示」します。これは、 hexdump: のようなものをパイプすることで確認できます。実際のソースコードにタブがある場所にgit diff | hd0x09 aka の文字が表示されるはずです。\t

git --no-pager [command]を使用するか、単に出力を 経由でパイプすることにより、ページングを一時的に無効にすることができますcatページャの使用をより恒久的に変更するためのさまざまな設定オプションもあります。たとえば、diff などの特定のコマンドに対してグローバルに無効にすることができます。git config --global pager.diff false

于 2021-09-03T07:24:21.280 に答える