While I was watching a course on Pluralsight, Advanced Git Tips and Tricks, I came across a feature that I had never heard of before, but well worth knowing. Did you know you can wrangle wandering whitespace with Git?
You may have already noticed that Git shows you trailing whitespace when you use the
git diff command.
As you can see, Git has highlighted the unnecessary space at the end of some of the added and changed lines.
Configuring how Git handles whitespace
You can control which whitespace Git will highlight with your
.gitconfig file. For instance, to have Git highlight tabs when you use them for indenting, instead of spaces, you can configure Git with this command.
git config --global core.whitespace "tab-in-indent"
Some helpful options are:
"blank-at-eol"– show space at end of lines
"blank-at-eof"– show space at end of files
"tab-in-indent"– show tabs in indentation
"indent-with-non-tab"– show spaces in indentation (opposite of the previous option)
For a complete list of whitespace configuration options, check out the core.whitespace section of the manpage for the
Making Git stop on whitespace errors
Ever how you set up whitespace handling in Git, you can make Git show you what you consider whitespace errors. You do this by adding the
--check option to the diff command.
git diff --check
When there are whitespace errors, this command returns an error code. That means, if you put this line in a pre-commit hook, then git will not let you commit code that has whitespace you do not want.
Automatically correcting whitespace errors
If you didn’t check for whitespace errors before you committed, but want to fix any whitespace errors in the last commit, you can use the
git rebase command with an option.
Check your previous commit.
git diff HEAD~1 HEAD
If you see whitespace errors, and you haven’t yet pushed those changes to a remote repo, ask Git to fix them for you.
git rebase HEAD~1 --whitespace=fix
This short article has shown a neat and very helpful feature of Git. It will show you errors in your code’s whitespace, according to how you’ve configured Git. It will even help you prevent unwanted whitespace from sneaking into your commit, or help you remove that whitespace if it does.