Thanks Joe, took me a while since some of the remote commands get some obscure / complicated. And testing them means setting up random repros and pushing / pulling.
The two highlights for me are that "git fetch origin :foo" actually just makes a new branch named foo, and "git push origin :bar" deletes the branch bar on origin. It basically means "push nothing to bar" and "fetch nothing to foo".
Why git has that as a valid command... who knows
(btw I love gitignore! I recommend it all the time, especially for big web frameworks like django)