すべてのgitコマンドでスペースの変更を無視します。

すべてのgitコマンドでスペースの変更を無視します。

私は行末を変更したときにgitが警告するようにする方法や、ファイル全体をめちゃくちゃにするのを防ぐためにさまざまな異なる技術を使用する方法を説明する多くのウェブサイトを見つけました。今は遅すぎると仮定します。ツリーはすでにファイル行の終わりを切り替えるコミットを作成しているので、古いファイルを減算してから、git diff同じ内容の新しいファイルを追加することを示しています。

私はこれらのオプションを無視するように指示するgit設定オプションまたはコマンドラインフラグを探しています。diff2行が空白だけ異なる場合は、同じふりをします。ファイルの違いに依存するすべてを処理するには、この構成オプション/フラグが必要です。diffでもblame/merge理想的にも末尾の空白、特に行末を完全に無視したいrebaseと思います。gitどうすればいいですか?

答え1

diffの場合はそうですgit diff --ignore-space-at-eol。これだけで十分です。 diffとBlameの場合-w:を使用して、git diff -wすべてのスペースの変更を上書きできますgit blame -w

git applyとの場合は、git rebaseマニュアルに記載されています--ignore-whitespace

マージには外部マージツールを使用する必要があるようです。favorite-mergetoolお気に入りの場所にこのラッパースクリプト(テストされていない)を使用できます。マージツール;ランニングgit -c mergetool.nocr.cmd=/path/to/wrapper/script merge。マージ結果はUnix形式になります。他の形式を好む場合は、すべてを別の形式に変換するか、$MERGEDマージ後に変換します。

#!/bin/sh
set -e
TEMP=$(mktemp)
tr -d '\013' <"$BASE" >"$TEMP"
mv -f "$TEMP" "$BASE"
TEMP=$(mktemp)
tr -d '\013' <"$LOCAL" >"$TEMP"
mv -f "$TEMP" "$LOCAL"
TEMP=$(mktemp)
tr -d '\013' <"$REMOTE" >"$TEMP"
mv -f "$TEMP" "$REMOTE"
favorite-mergetool "$@"

混合行の終わりによる問題を最小限に抑えるには、次の点を確認してください。テキストファイルは次のように宣言されます。

また、見ることができますgit-mergeは行末の違いを無視できますか?スタックオーバーフローに。

関連情報