This is an old revision of the document!
Overview
A moderately (dis)organized list of features related to dealing with whitespace issues in Git, in no particular order.
git diff
Flag whitespace errors:
$ git diff --check
Other possibilities:
--ignore-space-at-eol
Ignore changes in whitespace at EOL.
-b, --ignore-space-change
Ignore changes in amount of whitespace. This ignores whitespace at line end, and
considers all other sequences of one or more whitespace characters to be equivalent.
-w, --ignore-all-space
Ignore whitespace when comparing lines. This ignores differences even if one line has
whitespace where the other line has none.
--ignore-blank-lines
Ignore changes whose lines are all blank.
git merge
Recursive merge options:
ignore-space-change, ignore-all-space, ignore-space-at-eol, ignore-cr-at-eol
Treats lines with the indicated type of whitespace change as unchanged for the sake
of a three-way merge. Whitespace changes mixed with other changes to a line are not
ignored. See also git-diff(1) -b, -w, --ignore-space-at-eol, and --ignore-cr-at-eol.
· If their version only introduces whitespace changes to a line, our version is
used;
· If our version introduces whitespace changes but their version includes a
substantial change, their version is used;
· Otherwise, the merge proceeds in the usual way.
git rebase
--ignore-whitespace, --whitespace=<option>
These flag are passed to the git apply program (see git-apply(1)) that applies
the patch. Incompatible with the --interactive option.
From man git-apply:
--ignore-space-change, --ignore-whitespace
When applying a patch, ignore changes in whitespace in context lines if
necessary. Context lines will preserve their whitespace, and they will not
undergo whitespace fixing regardless of the value of the --whitespace option.
New lines will still be fixed, though.
--whitespace=<action>
When applying a patch, detect a new or modified line that has whitespace
errors. What are considered whitespace errors is controlled by core.whitespace
configuration. By default, trailing whitespaces (including lines that solely
consist of whitespaces) and a space character that is immediately followed by
a tab character inside the initial indent of the line are considered
whitespace errors.
By default, the command outputs warning messages but applies the patch. When
git-apply is used for statistics and not applying a patch, it defaults to
nowarn.
You can use different <action> values to control this behavior:
· nowarn turns off the trailing whitespace warning.
· warn outputs warnings for a few such errors, but applies the patch as-is
(default).
· fix outputs warnings for a few such errors, and applies the patch after
fixing them (strip is a synonym --- the tool used to consider only
trailing whitespace characters as errors, and the fix involved stripping
them, but modern Gits do more).
· error outputs warnings for a few such errors, and refuses to apply the
patch.
· error-all is similar to error but shows all errors.