[解決済み] コミット間の git-diff で空白の変更を *全て* 無視する
質問
私はコードベースを調べていて、空白のおかしなところを修正したり、一般的にインデントなどを修正しているのですが、うっかり他の変更をしていないか確認したいので
git diff -w
を使って、空白の違いを無視して、変更されたすべてのファイルの違いを表示しています。 問題は、これは実際には無視できない
すべて
の空白の違いを無視しているわけではありません。
I
は単なる空白の違いだと考えています。 例えば、次の
git diff -w
,
-"Links":
-{
-
- "Thermal":
-
-{
-
+ "Links": {
+ "Thermal": {
だけであることがわかると思います。
- 余分な空白行を削除しています。
- 中括弧を、その値が開いているキーの行末に付け、そして
- 文脈に合うようにインデントされます。
この質問 は、最初は答えを提供しているように見えましたが、2 つの特定の ファイル の違いではなく、2 つの特定の コミット . 検索して出てきた他のすべてのものも同様に行き止まりでした。 例えば この質問 はマージについてであり、差分を表示するものではありませんし この質問 は単語レベルの差分を表示することを扱っている、といった具合です。
どのように解決するのですか?
もしかしたらもっと良い答えがあるかもしれませんが、私がこれまで見つけた最良の解決策はこれです。
まず、Gitが現在使用している"whitespace"の定義を制御する必要があります。
git config core.whitespace '-trailing-space,-indent-with-non-tab,-tab-in-indent'
次に、使用する単語の定義を制御する必要があります。 ただ使うのではなく
git diff -w
を追加します。
--word-diff-regex='[^[:space:]]'
:
git diff -w --word-diff-regex='[^[:space:]]'
コンテキストが表示されますが、これは(私の場合、差異がないことを確認するために
を除いて
を除く空白の違い) は役に立ちません。 あなたは
-U0
を使って、Git に 0 行の文脈を与えるように指示することができます。
git diff -w -U0 --word-diff-regex='[^[:space:]]'
を実行しても、文脈とほぼ同じような出力が得られますが、それでも、すべての変更に注意深く目を通し、手作業で空白の変更だけであることを確認するよりはるかに優れています。
上記のすべてを 1 つのコマンドで行うこともできます。その場合
-c
フラグは、1つのコマンドに対してのみ git の設定を変更します。
git -c core.whitespace=-trailing-space,-indent-with-non-tab,-tab-in-indent diff -U0 --word-diff-regex='[^[:space:]]'
関連
-
[解決済み] Git のアンプッシュされたコミットを表示する
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] Git で、ステージされていない変更を破棄するにはどうしたらいいですか?
-
[解決済み] Git ですべてのリモートブランチをクローンする方法
-
[解決済み] Gitを使って最後のXコミットをまとめる
-
[解決済み] Git でブランチからコミットを削除する
-
[解決済み] 2つのコミット間で変更されたファイル名のみをリストアップする方法
-
[解決済み] Git のコミットで変更点を確認するには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
gitlab をアップロード ! [リモート拒否] dev -> dev (受信前のフックが拒否されました)
-
[解決済み] ホワイトスペースの競合を回避したマージ
-
Git がエラーを報告しました。現在のブランチの先端が遅れているため、更新が拒否されました。
-
git のコンパイルとインストールの問題を解決する fatal: https のリモートヘルパーが見つからない
-
[解決済み] Gitの本番環境へのプッシュ(FTP)
-
[解決済み] チェリーピックのコンフリクトを解決するにはどうしたらいいですか?
-
[解決済み] Git のリモート HEAD を master 以外に指定するように変更する
-
[解決済み] CVS から Git への移行: $Id$ 相当?
-
[解決済み] どのブランチとマージしたいかを言わずにpullするように言われました。
-
[解決済み] Git の 'master' ブランチを 'release' にリネームするには?