すべてのgitコマンドで空白の変更を無視する


26

行末を変更するときにgitに警告する方法を説明するサイトや、ファイル全体を台無しにしないようにするその他のさまざまなテクニックを見つけました。それには遅すぎると仮定してください-ツリーにはすでにファイルの行末を切り替えるコミットがありますのでgit diff、古いファイルの減算と同じ内容の新しいファイルの追加が表示されます

私はdiffそれらを無視するように指示するgit設定オプションまたはコマンドラインフラグを探しています-2 つの行が空白だけで異なる場合、それらは同じふりをします。-私は、ファイルの違いに依存しています何のために仕事に、この設定オプション/フラグを必要としdiffblame偶数merge/ rebase理想的に-私が望むgit完全に末尾の空白、特に行末を無視します。どうやってやるの?

回答:


14

diffには、がありgit diff --ignore-space-at-eol、これで十分です。デフと非難のために、あなたが持つすべての空白の変更を無視することができます-wgit diff -wgit 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は行末の違いを無視することできますか?スタックオーバーフロー。


git blameで-wフラグを常に使用する構成はありますか?
-Thayne

@Thayne私が知っていることではない。次のようなエイリアスを定義できますが、bl = blame -w組み込みコマンドの名前を再定義することはできません。また、デフォルトにするための構成オプションが表示されません。しかし、私はgitの専門家ではありません。
ジル 'SO-悪であるのをやめる'

のためにgit status
エハズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.