[darcs-users] rebase feedback and amend-record flexibility
Miles Gould
miles at assyrian.org.uk
Tue Apr 10 15:36:33 UTC 2012
On 10/04/12 16:15, Michael Hendricks wrote:
> Does that actually happen with rebase? I thought you end up with two
> copies of the changes, or does it also rewind the source branch?
>
> Git rebase rewinds the source branch.
It does both :-) The original commits are still in there, and can be
found again using the reflog, but the branch now points to the new commits.
In more detail: recall that git branches are just autoincrementing
pointers to nodes in the history DAG. Suppose that we have branches
branch_a and branch_b, pointing to commits A and B, with common ancestor
C. For simplicity, let's suppose that A is a direct child of C. If we
rebase branch_a onto branch_b, then we create a new commit A' which is
the result of applying diff(C, A) to B. We then move branch_a to point
at A'. The commit A is still in there, accessible as HEAD@{1}, but not
reachable from any named branch. If it remains unreachable, it will
eventually be garbage-collected.
HTH,
Miles
More information about the darcs-users
mailing list