Subject: Re: How to maintain private/secret/confidential branch.

From: Alexander Potashev <[email-masked]>
Date: Sun, 14 Dec 2008 19:06:45 +0300

Hello, Łukasz!

On 16:38 Sun 14 Dec     , Łukasz Lew wrote:
> Thanks Nick, thats really helpful (and surprisingly simple).
> I have a couple more questions:
> 
> On Sun, Dec 14, 2008 at 15:55, Nick Andrew <[email-masked]> wrote:
> > On Sun, Dec 14, 2008 at 02:49:50PM +0100, Łukasz Lew wrote:
> >> I don't know how to make such a scenario work:
> >> - two repositories: pub, priv
> >> - priv is clone/branch of pub
> >> - there is some constant developement both in pub and priv
> >> - there are regular syncs with pub in priv
> >>
> >> Problem:
> >> Occasionally I want to push some changes from priv to pub.
> >> Then after syncing with pub I want to get as few conflicts as possible.
> >>
> >> Is it possible to do with git?
> >
> > Git can do almost anything. One should instead ask "How to do this
> > with git?" :-)
> 
> So I've heard, but not yet experienced it myself. I'm thrilled to try.
> 
> >
> > 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?
It's, however, better to make more commits to not experience the need of
commit splitting.

But you can use '--no-commit' option of 'git cherry-pick' and 'git merge'
(and 'git pull' as well as 'git merge'). For example:

	git cherry-pick --no-commit <sha1>    # cherry-pick without commiting
	git reset --                          # unstage all changes
	git add -p                            # patch update

You can also use 'git add -i' (interative mode) instead of 'git add -p'.

> 
> > Push your for-public branch to pub,
> > then rebase your private branch.
> 
> Rebase to the tip of master? Is it needed? Ie. cherry-pick does not
> remove the patch from
> the master in priv.
> 
> If I now pull from pub, I will get the same change and it mereges nicely :D
> 
> Can I get away without creating for_pub branch? maybe cherry pick in
> pub from priv somehow?
> 
> >
> > Nick.
> >

					Alexander