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
On the remote machine
If author@remote uses mutt
, he can move to his working copy, call it and type on each message:
|git am