空白の競合なしでマージ


179

約1000行のコードを変更する大きなコミットを取得し、行末から空白を削除し、タブの前のスペースを削除するという問題が発生しました。

また、このプロジェクトには約50のプルリクエストがあり、コミットをマージするとすべてが競合します。gitを設定して、将来のコミットをマージするときに、そのうちの1つが空白の変更である場合の競合を無視する方法はありますか?

git自体を変更したり、サードパーティのツールを使用したりすることはできませんが、フックを使用することは問題ありません。


回答:


246
 git merge -Xignore-all-space

または(より正確に)

 git merge -Xignore-space-change

マージ中にスペースに関連するすべての競合を無視するのに十分なはずです。

git diffを参照してください:

--ignore-space-change

空白の量の変更を無視します。
これは行末の空白を無視し、1つ以上の空白文字の他のすべてのシーケンスを同等と見なします。

--ignore-all-space

行を比較するときに空白を無視します。
これは、一方の行に空白があり、もう一方の行には空白がない場合でも、違いを無視します。

ks1322 コメントに良いアドバイスを追加します:

と合併する価値がある--no-commitと、実際にコミットする前にマージを確認します


OPカラム・マクレイは、その場合には、マージは中断進み、プルリクエストパッチに含まれている末尾のスペースは、ローカルのファイルに適用され、それを報告します。
ただし、OPは、後続スペースを処理する事前コミットフックを使用します。
(私はと少し似たと仮定し、この1また、ここで参照します)。


OPのプリコミットフックはここ参照されます

末尾の空白を削除することに加えて、タブの前にある1〜3個のスペースを削除し(タブ幅を4に設定しています)、EOLを追加します。
EOLを追加するコードによってWindowsでファイルが削除されるという報告がありましたが、複製することができませんでした。


1
これまでのテストでは、ファイル内の空白の変更をすべて削除しているようです。ただし、私は現在、pre-commitフックを使用して末尾の空白を削除しているため、問題はありません。
callumacrae

1
@CallumMacrae:わかりました。フィードバックをありがとうございます。繰り返しになりますが、わかりやすくするために回答にリンクを追加しました。
VonC 2012年

1
git merge -Xignore-space-change-まあ、私は、これは確かに言うことができる...仕事しませんでした。削除しようとした空白が1つ残っていました。Gitは絶対に最悪です。
jww

1
と合併する価値がある--no-commitと、実際にコミットする前にマージを確認します。
ks1322

1
-Xignore-all-spaceは空白について何もしないようで、--ignore-space-changeはgitのオプションとして認識されませんでした
Preza8
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.