On 2008-12-14, Łukasz Lew <lukasz.lew@xxxxxxxxx> wrote: > On Sun, Dec 14, 2008 at 15:55, Nick Andrew <nick@xxxxxxxxxxxxxxx> wrote: >> If I understand your problem, you could solve it with git cherry-pick >> and rebase. On priv, make a for-public branch from a pub branch. Then >> cherry-pick the commits you want from your private branch into the >> for-public branch. > > That almost works. Can I somehow split existing commits > just like in git-add -p? This is going to sound weird to some seasoned folks, and I'm hoping to hear better ways of doing this. But having done stuff like this, I once wrote it up and here're my notes: To split just the top commit into multiple commits: * start git gui * choose "amend last commit" from the commit menu * unstage all files (meaning you click on the little icons so they move from the left-bottom panel to the left-top panel) * pick files or hunks in files to stage and commit the usual way * continue all changes are committed To split a commit that is *not* the top one: * start an interactive rebase that includes that commit * mark that commit as "edit" and start the rebase * when the rebase pauses, use git gui as described above To combine a set of commits and split the result in some other way (meaning you have commits A B P Q C D R E S and you want to make them A B C D X Y Z where X+Y+Z = P+Q+R+S!) * start an interactive rebase * move lines as appropriate (in the editor) so the commits P,Q,R,S are together * choose "squash" on the second and subsequent ones and start the rebase * (dirty trick warning) when the editor for the combined commit message pops up, delete ALL the lines and save * use git gui as above * then continue the rebase Hope this helps... -- 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