So, last Friday while working on Freesound 2, I stumbled upon an interesting problem I need to solve using git. The problem is as follows: say you have a clone of a public git url (for example http://github.com/bram/freesound). Now, you're making changes in this repository and at some point you want these changes back into the origin repository.
There is no way to push from a clone of a public url (you don't have rights to push), so the only way is making a patch and send that patch to someone who does have those rights. Searching about on the web taught me about some commands like "format-patch", but all was a bit unclear. format-patch creates mail-box formatted mail which contain a complete set of patches with comments and everything which you can easily send by email. A quick visit to the #git channel on Freenode IRC cleared up the sometimes dense explanation in the man pages:
# make changes/commits all you want # this creates a mailable patch: git format-patch origin --stdout > filename.patch # now send this patch to whoever should do the patching
# this "applies" the "mailbox file" git am
# pull and throw away the current changes in master git pull --rebase .