Skip to content

Instantly share code, notes, and snippets.

@ashaindlin
Forked from mxgrn/gist:663933
Last active October 2, 2015 00:49
Show Gist options
  • Save ashaindlin/c548baca0e663b53dfbd to your computer and use it in GitHub Desktop.
Save ashaindlin/c548baca0e663b53dfbd to your computer and use it in GitHub Desktop.
Git's pre-commit hook to remove trailing whitespaces/tabs
#!/bin/sh
#
# This will abort "git commit" and remove the trailing whitespaces from the files to be committed.
# Simply repeating the last "git commit" command will do the commit then.
#
# Put this into .git/hooks/pre-commit, and chmod +x it.
if git rev-parse --verify HEAD >/dev/null 2>&1
then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
if test "$(git diff-index --check --cached $against --)"
then
echo "COMMIT ABORTED! Removing trailing whitespaces...."
for FILE in `git diff-index --check --cached $against -- | sed '/^[+-]/d' | cut -d: -f1 | uniq`; do echo "* $FILE" ; sed -i 's/ *$//' "$FILE" ; done
echo 'Done! Run `git add` and `git commit` once again.'
exit 1
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment