Martin, Got as far as applying the temporary patch and I now get a load of... Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] Skipping patch. 1 out of 1 hunk ignored -- saving rejects to file theme/onepointnine/local.css.rej The next patch would create the file theme/onepointnine/local.css, funnily I didn't think that file had anything to do with it, but when I changed branched I got T theme/onepointnine/local.css Not sure what the T means :-( H. 2009/9/15 Martin Langhoff <martin.langhoff@xxxxxxxxx>: > On Tue, Sep 15, 2009 at 2:10 PM, Howard Miller > <howard@xxxxxxxxxxxxxxxxxxx> wrote: >> Martin, >> >> Looked at gitk - yes there is definitely one more commit still on the >> current (wrong) branch. >> >> I deleted the offending file and have now successfully switched to the >> other (correct) branch. > > ok! > > so you have > > A - The commit you undid, and have in the temp patch. Note that this > patch file is missing the file you've rm'd. > > B - A commit you haven't "undone" on the "wrong" branch X. > > and you are on branch Y > > so now... > > 1 - git format-patch Y^..Y # will export that patch B into a file for you. > 2 - git am 0001-whatever-the-name-of-the-file.txt # patch B > this may need conflict resolution - read the notes it prints! If > it refuses to apply the patch, do "git am --skip" to indicate you > won't use git-am no more for this, and try applying it with the patch > utility. > 3 - patch -p1 < your-patch-A.patch > 4 - find and readd the file you rm'd earlier -- if you don't have > another copy, we can get it from git reflog but that'll take extra > steps :-) > 5 - git commit # you're committing your patch A here > > Now, review with gitk to see that you have what you want to have > there. If it's all ok... > > 6 - git checkout X > 7 - git reset --hard # unstich that last stray commit > -- > > hope the above helps. Git pros will see that the process could be much > shorter :-) I chose this specific path because in exporting your > patches and applying them again you can see each step. > > If we were to start again, and the branches are reasonably close to > eachother (not 19_STABLE vs cvshead :-) ) then you can say > > - X has 2 bad commits that belong to Y, then > 1 - gitk X & # open gitk to visualise the commits, send it to the background > 2 - git checkout Y > 3 - git cherry-pick X^ # takes the next-to-last commit from X and > tries to apply it here - conflict resolution may be needed > 4 - git cherry-pick X # same with the very last commit on X > 5 - gitk # check that is all as you want it > 6 - git checkout X > 7 - git reset --hard X^^ # "rewind 2 commits" > > hth, > > > > m > -- > martin.langhoff@xxxxxxxxx > martin@xxxxxxxxxx -- School Server Architect > - ask interesting questions > - don't get distracted with shiny stuff - working code first > - http://wiki.laptop.org/go/User:Martinlanghoff > -- > To unsubscribe from this list: send the line "unsubscribe git" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html