The .gitconfig file in my home directory:

examples/gitconfig.txt

[user]
    name = Gabor Szabo
    email = gabor@szabgab.com
[alias]
    st = status
    co = checkout
    ci = commit
    try = merge --no-commit --no-ff
    files = log --name-only
    lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
    changed = diff-tree -r --no-commit-id --name-only
    last = changed HEAD
    
    # pull and update submodules
    pullall = !git pull && git submodule update --init --recursive
[push]
    default = simple
[core]
    excludesfile = /Users/gabor/.gitignore
[difftool "sourcetree"]
    cmd = opendiff \"$LOCAL\" \"$REMOTE\"
    path = 
[mergetool "sourcetree"]
    cmd = /Users/gabor/Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
    trustExitCode = true
[commit]
    template = /Users/gabor/.stCommitMsg