git - trim whitespace
Solution 1
To trim trailing whitespace on all files in the current directory, use:
sed -i 's/[[:space:]]*$//' *
To warn about future whitespace errors (both trailing spaces and spaces before tabs), and to fix whitespace errors in patches, add the following code to your gitconfig
file:
[core]
whitespace = trailing-space,space-before-tab
[apply]
whitespace = fix
Solution 2
core.whitespace
instructs git to flag certain whitespace problems:
-
trailing-space
warns about whitespace at the end of a line or at the end of a file -
space-before-tab
warns when there is a space before a tab used for indentation
apply.whitespace
is used when applying a patch. It checks for whitespace errors (the ones listed above, in core.whitespace
) and applies the patch after attempting to fix them (i.e., remove them).
These options go in ~/.gitconfig
-- that is, a .gitconfig
file at the root of your user's home directory (typically /home/user/.gitconfig
on Linux, /Users/user/.gitconfig
on Mac OS X, and I don't know where on Windows but I suppose somewhere in C:\Documents and Settings\user
).
Solution 3
See this thread git remove trailing whitespace in new files before commit on using git rebase
to strip whitespace from files that you've already committed.
Solution 4
And to trim the white spaces from all files recursively from all sub directories this can be used.
find ./* -type f -exec sed -i 's/[[:space:]]*$//' {} \;
Related videos on Youtube
Zaz
Updated on December 03, 2020Comments
-
Zaz over 3 years
I've accidentally put some whitespace in my initial commit - it shows up red in
git diff --color
. What's the best way to get rid of the existing whitespace and how can I avoid this happening again?I am not necessarily looking for a built-in git command. Any external program available for free on Ubuntu would also be welcome.
-
xenoterracide almost 14 yearsawesome I didn't know git had this feature.
-
ntc2 over 11 yearsSee this question.
-
Carlos Marx over 3 yearsDoes this answer your question? Make git automatically remove trailing whitespace before committing
-
-
Zaz almost 14 yearsThat explains the whitespace settings (+1 for that) but doesn't answer the question "How do I get rid of existing whitespace?". I've updated the original post for clarity.
-
stevejpurves over 9 yearsthis is good for protecting against whitespace commits but the OP asked about removing whitespace they's already commited
-
Zaz over 9 years@stevejpurves: The top line explains how to remove trailing whitespace using sed. As far as I know, there is no git command that does the same thing.
-
Kanhaiya over 3 yearsTL;DR: To fix-up the last commit in terms of whitespace, use
git rebase --whitespace=fix HEAD~