move changes to branch retroactively?
Harvey Chapman
hchapman-hg at 3gfp.com
Thu Jan 8 19:05:58 UTC 2015
> On Jan 8, 2015, at 1:20 PM, Neal Becker <ndbecker2 at gmail.com> wrote:
>
> It's gotten a little more complicated.
>
> Here's what I have:
>
> 1115 - 1116 - 1117 - 1118 - 1119
> where 1119 is the new branch commit
>
> 1118 is a couple of changes I forgot to commit, but should be independent of
> other changes (1118 only changes files not touched by 1116+1117)
>
> So 1116+1117 are the changes I want to get off the default, and put on their own
> branch.
>
> Here's what I want:
>
> 1115 - 1118 < default
> - 1119 - 1116 - 1117 < new branch
>
> or even better:
>
> 1115 - 1118 < default
> - 1119 - 1116 - 1117 - 1118 < new branch
>
> Now as I understand, graft _copies_ changes, not moves them, correct?
I created the following repo to mimic yours:
hg init neal
cd neal
for i in `seq 0 18`; do echo $i; touch $i; hg commit -Am $i; done
hg branch new_branch
hg commit -m "new_branch"
hg log --limit 5 --graph --template '{rev}: \"{desc}\" {branch} {tags}'
@ 19: "new_branch" new_branch tip
|
o 18: "18" default
|
o 17: "17" default
|
o 16: "16" default
|
o 15: "15" default
|
Here are some commands to end up with the graph below:
hg update 15
hg strip 19
hg rebase -s 18 -d .
hg branch new_branch
hg commit -m "new_branch"
hg rebase -s 16
hg log --limit 5 --graph --template '{rev}: \"{desc}\" {branch} {tags}'
o 19: "17" new_branch tip
|
o 18: "16" new_branch
|
@ 17: "new_branch" new_branch
|
| o 16: "18" default
|/
o 15: "15" default
|
If you really want “18” at the tip of new_branch, just graft it:
hg update new_branch
hg graft 16 # <<< NOTE! After rebasing above, “18” is now 16. Use hashes or be careful.
hg log --limit 6 --graph --template '{rev}: \"{desc}\" {branch} {tags}'
@ 20: "18" new_branch tip
|
o 19: "17" new_branch
|
o 18: "16" new_branch
|
o 17: "new_branch" new_branch
|
| o 16: "18" default
|/
o 15: "15" default
|
Although, if 18 really is independent of both 16 and 17, why not branch from there? So, starting over from the beginning:
hg update 15
hg strip 19
hg rebase -s 18 -d .
hg update 18 # <<< Branch from 18
hg branch new_branch
hg commit -m "new_branch"
hg rebase -s 16
hg log --limit 5 --graph --template '{rev}: \"{desc}\" {branch} {tags}'
o 19: "17" new_branch tip
|
o 18: "16" new_branch
|
@ 17: "new_branch" new_branch
|
o 16: "18" default
|
o 15: "15" default
|
More information about the Mercurial
mailing list