1. ホーム
  2. git

[解決済み] 空白以外の変更点のみを追加

2022-03-14 09:25:37

質問

私は、テキストエディタに、ファイル保存時に自動的に末尾の空白を切り詰めるように設定しています。そして、末尾の空白に深刻な問題があるオープンソースプロジェクトに貢献しています。

パッチを提出しようとするたびに、まず空白だけの変更をすべて手作業で無視し、関連する情報のみを選択する必要があります。それだけでなく git rebase 通常、それらのためにいくつかの問題に遭遇します。

そのため、以下のような方法で、空白でない変更点のみをインデックスに追加できるようにしたいと思います。 git add -p しかし、すべての変更を自分で選択する必要はありません。

どなたか、この方法をご存じないでしょうか?

EDIT: I できない を変更し、メーリングリストでの議論の結果、これを無視することに決定しました。

解決方法は?

Frewの解決策は私が必要としているものではなかったので、これは全く同じ問題のために私が作ったエイリアスです。

alias.addnw=!sh -c 'git diff -U0 -w --no-color "$@" | git apply --cached --ignore-whitespace --unidiff-zero -'

あるいは、単純に実行することもできます。

git diff -U0 -w --no-color | git apply --cached --ignore-whitespace --unidiff-zero -

更新情報

オプションの追加 -U0--unidiff-zero によると、コンテキストマッチングの問題を回避するために、それぞれ このコメント .

で適用されるはずのパッチを基本的に適用します。 add 空白を変更しない場合。の後に git addnw your/file にはまだステージングされていない変更があり、それは空白が残っています。

no-colorは必須ではありませんが、私はcolorsをalwaysに設定しているので、これを使わざるを得ません。とにかく、転ばぬ先の杖です。

注意事項

このトリックはそのままでも有効ですが、もしこのトリックを使って空行の変更を --ignore-blank-lines となると、事態は複雑になります。 このオプションで git diff はいくつかのチャンクを削除するだけで、出力ファイルの行番号がずれてしまうため、結果としてパッチが不正になります。