Re: Flatten history

2013-07-29 Thread Felipe Contreras
On Mon, Jul 29, 2013 at 8:42 PM, Hilco Wijbenga
hilco.wijbe...@gmail.com wrote:
 Hi all,

 I have a (public) feature branch that has been kept up-to-date with
 master by regularly merging master back into it. I would now like to
 get all the changes from feature but not any of the commits.
 Basically, I want to replay all of feature's commits without creating
 those commits.

 I thought something like

 git cherry-pick -n abcd^..feature

 should do the trick (while on master, where abcd is the SHA-1 of the
 commit where feature was created) but I get conflicts.

 First, why the conflicts? I have done all the merges so cherry-pick
 should simply be able to replay them? Second, what is the correct way
 of doing this?

Perhaps

% git cherry-pick -n --no-merges --right-only --topo-order
--cherry-pick abcd^..feature

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Flatten history

2013-07-29 Thread Bryan Turner
On 30 July 2013 13:50, Felipe Contreras felipe.contre...@gmail.com wrote:
 On Mon, Jul 29, 2013 at 8:42 PM, Hilco Wijbenga
 hilco.wijbe...@gmail.com wrote:
 Hi all,

 I have a (public) feature branch that has been kept up-to-date with
 master by regularly merging master back into it. I would now like to
 get all the changes from feature but not any of the commits.
 Basically, I want to replay all of feature's commits without creating
 those commits.

 I thought something like

 git cherry-pick -n abcd^..feature

 should do the trick (while on master, where abcd is the SHA-1 of the
 commit where feature was created) but I get conflicts.

 First, why the conflicts? I have done all the merges so cherry-pick
 should simply be able to replay them? Second, what is the correct way
 of doing this?

 Perhaps

 % git cherry-pick -n --no-merges --right-only --topo-order
 --cherry-pick abcd^..feature

 --
 Felipe Contreras

Wouldn't git merge --squash do what you're looking for? It seems like
the only way to not get conflicts trying to cherry pick is if you
never had any conflicts while you were merging master into your
feature branch. Evil merges, where you actually have to change code,
even if it's just to resolve conflicts, don't tend to replay
correctly.

It seems like this should do it:
% git checkout master
Switched to branch 'master'
% git merge --squash feature
Squash commit -- not updating HEAD
Automatic merge went well; stopped before committing as requested
% git commit

git merge --squash will just apply the changes without creating a
commit. You can then make any final changes you want to and write your
commit message for the feature.

Hope this helps,
Bryan Turner
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Flatten history

2013-07-29 Thread Hilco Wijbenga
On 29 July 2013 20:50, Felipe Contreras felipe.contre...@gmail.com wrote:
 On Mon, Jul 29, 2013 at 8:42 PM, Hilco Wijbenga
 hilco.wijbe...@gmail.com wrote:
 Hi all,

 I have a (public) feature branch that has been kept up-to-date with
 master by regularly merging master back into it. I would now like to
 get all the changes from feature but not any of the commits.
 Basically, I want to replay all of feature's commits without creating
 those commits.

 I thought something like

 git cherry-pick -n abcd^..feature

 should do the trick (while on master, where abcd is the SHA-1 of the
 commit where feature was created) but I get conflicts.

 First, why the conflicts? I have done all the merges so cherry-pick
 should simply be able to replay them? Second, what is the correct way
 of doing this?

 Perhaps

 % git cherry-pick -n --no-merges --right-only --topo-order
 --cherry-pick abcd^..feature

Thank you for the suggestion but this still gives me conflicts.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Flatten history

2013-07-29 Thread Hilco Wijbenga
On 29 July 2013 20:59, Bryan Turner btur...@atlassian.com wrote:
 On 30 July 2013 13:50, Felipe Contreras felipe.contre...@gmail.com wrote:
 On Mon, Jul 29, 2013 at 8:42 PM, Hilco Wijbenga
 hilco.wijbe...@gmail.com wrote:
 Hi all,

 I have a (public) feature branch that has been kept up-to-date with
 master by regularly merging master back into it. I would now like to
 get all the changes from feature but not any of the commits.
 Basically, I want to replay all of feature's commits without creating
 those commits.

 I thought something like

 git cherry-pick -n abcd^..feature

 should do the trick (while on master, where abcd is the SHA-1 of the
 commit where feature was created) but I get conflicts.

 First, why the conflicts? I have done all the merges so cherry-pick
 should simply be able to replay them? Second, what is the correct way
 of doing this?

 Perhaps

 % git cherry-pick -n --no-merges --right-only --topo-order
 --cherry-pick abcd^..feature

 --
 Felipe Contreras

 Wouldn't git merge --squash do what you're looking for? It seems like
 the only way to not get conflicts trying to cherry pick is if you
 never had any conflicts while you were merging master into your
 feature branch. Evil merges, where you actually have to change code,
 even if it's just to resolve conflicts, don't tend to replay
 correctly.

 It seems like this should do it:
 % git checkout master
 Switched to branch 'master'
 % git merge --squash feature
 Squash commit -- not updating HEAD
 Automatic merge went well; stopped before committing as requested
 % git commit

 git merge --squash will just apply the changes without creating a
 commit. You can then make any final changes you want to and write your
 commit message for the feature.

Ah, yes git merge --squash feature seems to do exactly what I was
looking for. Funny, I thought I did something with rev-list last time
but this --squash is much simpler. :-) Thank you!
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html