I have my text editor to automatically trim trailing whitespace upon saving a file, and I am contributing to an open source project that has severe problems with trailing whitespace.
Every time I try to submit a patch I must first ignore all whitespace-only changes by hand, to choose only the relevant information. Not only that, but when I run git rebase I usually run into several problems because of them.
As such I would like to be able to add to index only non-whitespace changes, in a way similar that git add -p does, but without having to pick all the changes myself.
Does anyone know how to do this?
EDIT: I cannot change the way the project works, and they have decided, after discussing it on the mailing list, to ignore this.
@Frew solution wasn’t quite what I needed, so this is the alias I made for the exact same problem:
Or you can simply run:
Update
Added options
-U0, and--unidiff-zerorespectively to workaround context matching issues, according to this comment.Basically it applies the patch which would be applied with
addwithout whitespace changes. You will notice that after agit addnw your/filethere will still be unstaged changes, it’s the whitespaces left.The –no-color isn’t required but as I have colors set to always, I have to use it. Anyway, better safe than sorry.
Warning
While this trick works as-is, if you try to use it to drop blank line changes with
--ignore-blank-linesthen things get complicated. With this option,git diffwill just drop some chunks, making the resulting patch bogus since the line numbers in the destination file are going to be off.