Set Git user name and e-mail address

Git uses your identity information for all commits you do on the system,
therefore it is essential that user.name and user.email configuration
options are set at all times.

To override the configuration options defined in ~/.gitconfig:

    $ git config --global user.name "John Doe"
    $ git config --global user.email john@doe.com
Set default editor to gVim

By default, Git uses your system's default editor for typing in commit
messages. Setting core.editor overrides this behaviour.
Set default diff and merge tool to gVimDiff

To prevent Git from picking a default diff and merge resolution tool
instead of you, you must specify diff.tool and merge.tool configuration
variables explicitly.
Colorize terminal outputs

Colored output helps you visually parse the output quickly and easily.

The color.ui configuration variable determines the default value for
all commands that Git is able to colorize. Set it's value to:

- always: output not intended for machine consumption should use color,

- true/auto: such output should use color when written to terminal,

- false/never: do not use color unless enabled explicitly by more
  specific configuration variables or the --color argument.
Add two-letter aliases for common Git commands
Enable auto-correction of mispelled commands

Automatically correct mispelled commands if only one valid alternative
is offered by Git. If more than one command can be deduced from the
entered text, nothing will be executed.

The corrected command will execute after waiting the given number of
deciseconds (0.1 sec) defined by help.autocorrect. If the value of this
option is negative, the corrected command will be executed immediately.
If the value is 0, the command will be just shown but not executed.
Enable basic rename and copy detection for diff

Git does not offer rename tracking nor copy tracking, which means it
does not record file renames or copies. What it does instead is rename
and copy detection if specified explicitely.

Setting diff.renames to boolean "true" will enable rename detection,
while setting it to "copy" or "copies" enables copy detection. Copy
detection always implies rename detection.
Display merge statistics after merge
Set default push behaviour to matching

The default behaviour for the 'git push' command has changed around
version 1.6.3. Setting it's value explicitely ensures we don't run into
suprises in the future.

Setting the push.default configuration variable to matching, Git will
only push branches that are present both on the local and remote repo.
Set whitespace policy

Git can detect and fix numerous whitespace issues. Setting the
core.whitespace configuration variable to trailing-space and
space-before-tab ensures that spaces at end of a line and spaces before
tabs at beginning of a line are treated by Git.
Automatically fix whitespaces issues in patches
Setup SMTP for sending e-mails
Merge feature-git into development