home | list info | list archive | date index | thread index

Re: [OCLUG-Tech] git question: how can i drop the n'th last commit?

  • Subject: Re: [OCLUG-Tech] git question: how can i drop the n'th last commit?
  • From: "Robert P. J. Day" <rpjday [ at ] crashcourse [ dot ] ca>
  • Date: Mon, 16 May 2016 06:57:51 -0400 (EDT)
  i hope rob doesn't mind my replying to his personal note from a
while back and CC'ing the list, since there's a bit more here than
meets the eye, and i wanted to make sure i was presenting it fairly.

  the problem was, having added, say, 5 linear commits to a branch (A,
B, C, D, E):

... X <-- A <-- B <-- C <-- D <-- E (now HEAD)

i wanted to rebase(?) B through E on top of X as if A never happened.

  On Wed, 11 May 2016, Rob Echlin wrote:

> This is why I think Git is the easiest way to shoot yourself in the
> foot, defined here as losing one or more of your commits.
>
> I have only done this in the GUI, but you can choose a commit and
> add the reverse of it to your current state. This means it looks
> sloppy, but I don't care, personally. So you end up with two commits
> you "didn't want", who cares? You still have that commit that
> "today" you don't want. More important, you still have all those
> other commits that you really, really want. Any commit can contain
> information that you can use in other times, other places.

  RGB suggested (as i suspected) that one can just rebase "onto", but
i didn't want to just get rid of or revert commit A. rather, in my
case, i realized only after several commits that A had been added to
the wrong branch, so i just wanted to "extract" it from where it was,
and let B through E settle back directly onto X as if A was never
there.

  putting A on a different branch was, of course, just a simple
cherry-pick. and while i haven't tested this yet, i'm assuming that i
can use a combination of cherry picking and rebasing to "extract" any
linear sequence of commits from a branch if i decide they properly
belonged elsewhere.

  is it just me, or do other people think this is a useful operation?
and is there an even simpler way to do it?

rday

-- 

========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================