Matt Finnicum wrote:
What I do is to follow along with things on the shortlog: http://source.winehq.org/git/?p=wine.git;a=shortlog
Lets say you want to move your current branch to my recent patch "riched20: Rewrite of scrolling and some redrawing code." - you'd click the link "commit" to the right of it. In the page that you'll be taken to, you'll see a line like this: commit abecd9e393925e008449a80ec14682790b29042c
you can then do a "git reset --hard abecd9e393925e008449a80ec14682790b29042c"
and your git will be moved to the point in time right after that commit. If you then want to manually apply a patch, click "commitdiff" to the right of it's entry in the shortlog, followed by "plain" on the top - this will take you to a plaintext diff of the patch, which you could save to a file and apply with the patch command. ("patch -p1 < thepatch.diff" usualy works well for me)
There's easier ways to do the second bit.
1) Use git cherry-pick
git branch master-20060913 git reset --hard abecd9e393925e00 #examine the log for commits git log master-20060913..abecd9e39392 #pull in commits git cherry -r 112810a480aaee4d6d8 git cherry -r aaca30cf039c227e #etc
2) Use git format-patch to get all the patches in the tree before resetting:
# put them all in one file named mb git format-patch --stdout abecd9e39392 > mb
# or create multiple files git format-patch abecd9e393925e008
Then reset (remember to have a clean tree!)
git reset --hard abecd9e393925e
Then edit "mb" and "git am" the patches you want:
git am mb
You don't need the full SHA1 ID... just enough to make it unique in the tree.
Mike