Given you have a patch that doesn´t apply to the current HEAD, but you know it applied to some commit in the past, git-rebase-patch will help you find that commit and do a rebase.
The patch to be applied.
$ git rebase-patch test.patch
could give you something like that:
Trying to find a commit the patch applies to... Patch applied to dbcf408dd26 as 7dc8b23ae1a First, rewinding head to replay your work on top of it... Applying: test.patch Using index info to reconstruct a base tree... Falling back to patching base and 3-way merge... Auto-merging README.txt
Then your last commit has the changes of the patch and is named test.patch.
Written by Niklas Fiekas <email@example.com>