On 2009-01-08, Boyd Stephen Smith Jr. <bss@xxxxxxxxxxxxxxxxx> wrote: >> A---B---C---D---E---F > Assuming you also have a ref (e.g. Foo) that points to F: > git checkout sha(B) > git merge -s sha(D) I think you now need to do a commit (assuming you meant "--squash"). Squash will not commit, and your rebase below (if it runs at all -- I suspect it will refuse to run) will hard reset to B, the current HEAD. IOW > After the merge: > A -> B -> C -> D -> E -> F [Foo] > | > +--> [HEAD] is not true. You have C+D in the index, not in the tree. > git rebase --onto $(cat .git/HEAD) sha(E) Foo Also I think you have an off-by-one error here; you need sha(D) in that rebase command, not sha(E). As your rebase command stands, you will lose commit E completely; neither the merge nor the rebase will pick it up. [Haven't tested, but I *think* I understand rebase well enough now to say so...] -- 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