Sharing code via email with git

Ángel Ortega

In a clone of a remote repository, start a branch to hold your code:

git checkout -b my-changes

Do your work and commit changes as you like.

When you are happy with your work, create a temporary directory:

mkdir /tmp/patches

Then change back to the master branch and build a set of patches from your branch with git format-patch:

git checkout master
git format-patch -n master..my-changes -o /tmp/patches

A bunch of files, one per changeset, have been created in /tmp/patches. Now, use the git send-email to send them, one per email, to the original author.

git send-email --no-thread --from me@here --to author@remote /tmp/patches

If author@remote acknowledges your changes, you can just merge your changes to the current master head and delete your temporary branch:

git merge my-changes
git branch -d my-changes

If author@remote uses mutt, he can move to his working copy, call it and type on each message:

|git am