~/.gitconfig
https://gist.github.com/crwang/bbf8bd09c826d49189f5
https://www.atlassian.com/git/tutorials/rewriting-history
The normal flow if I need to rebase a development branch.
# Pull the latest from origin
$ git checkout develop
$ git pull
$ git checkout [my-branch]
# Do the interactive rebase
$ git rebase -i develop
# Overwrite the branch on origin
$ git push -f origin
http://stackoverflow.com/questions/7244321/how-to-update-github-forked-repository
# Add the remote, call it "upstream":
git remote add upstream https://github.com/whoever/whatever.git
# Fetch all the branches of that remote into remote-tracking branches,
# such as upstream/master:
git fetch upstream
# Make sure that you're on your master branch:
git checkout master
# Rewrite your master branch so that any commits of yours that
# aren't already in upstream/master are replayed on top of that
# other branch:
git rebase upstream/master
http://stackoverflow.com/questions/1657017/how-to-squash-all-git-commits-into-one
git rebase --root -i