Say I have uncommitted changes in my working directory. How can I make a patch from those without having to create a commit?
git diff and git apply will work for text files, but won't work for binary files.
You can easily create a full binary patch, but you will have to create a temporary commit. Once you've made your temporary commit(s), you can create the patch with:
git format-patch
After you've made the patch, run this command:
git reset --mixed
This will roll back your temporary commit(s). The final result leaves your working copy (intentionally) dirty with the same changes you originally had.
On the receiving side, you can use the same trick to apply the changes to the working copy, without having the commit history. Simply apply the patch(es), and git reset --mixed .
Note that you might have to be well-synced for this whole option to work. I've seen some errors when applying patches when the person making them hadn't pulled down as many changes as I had. There are probably ways to get it to work, but I haven't looked far into it.
Here's how to create the same patches in Tortoise Git (not that I recommend using that tool):
Tortoise Git -> Create Patch Serial
Since: FETCH_HEAD will work if you're well-synced)Tortise Git -> Show Logreset "" to this... Mixed optionAnd how to apply them:
Tortoise Git -> Apply Patch SerialTortise Git -> Show Logreset "" to this... Mixed option