Re: [BUG] "git diff --word-diff" gives a diff while they are only space changes
- From
- Vincent Lefevre <vincent@vinc17.net>
- Date
- May 14, 2026, 09:55 UTC
- Message-ID
- <20260514095522.GA159111@qaa.vinc17.org>
- In-Reply-To
- <xmqq8q9migqk.fsf@gitster.g>
On 2026-05-14 16:37:39 +0900, Junio C Hamano wrote:
Show 14 quoted lines
> Michael Montalbo <mmontalbo@gmail.com> writes: > > > @@ -457,6 +457,11 @@ endif::git-diff[] > > + > > Note that despite the name of the first mode, color is used to > > highlight the changed parts in all modes if enabled. > > ++ > > +Word diff works by finding word-level changes within each hunk of > > +the line-level diff. The line-level alignment determines which > > +changed lines are compared to each other, which can affect the > > +word-level output. > > The added text may not say anything wrong, but I am not sure how it > helps the end user to know the way machinery works internally.
Perhaps only the first sentence should be kept and that the following should be added: "Because of that, using the --ignore-space-change option is recommended."
Note: Earlier in the discussion, Johannes Sixt suggested -w (--ignore-all-space), but this is wrong, as
git diff --word-diff -w <(printf foo) <(printf "f o o")
gives no differences while one has 1 word "foo" vs 3 words "f o o".
However, --ignore-space-change is actually not even sufficient since
git diff --ignore-space-change <(printf "foo bar") <(printf "foo\nbar")
finds differences though there are only space changes (thus this may affect hunks in case --word-diff would be used too). However, I suppose that the cases where --word-diff --ignore-space-change would not give a "real word diff" would be quite rare in practice.
-- Vincent Lefèvre <vincent@vinc17.net> - Web: <https://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / Pascaline project (LIP, ENS-Lyon)