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



Reply via email to