Re: How to maintain private/secret/confidential branch.
- From
Sitaram Chamarty <sitaramc@gmail.com>
- Date
- Dec 14, 2008, 16:13 UTC
- Message-ID
- <gi3bap$asc$1@ger.gmane.org>
- In-Reply-To
- <c55009e70812140738l8b51adax77cc6e507971554e@mail.gmail.com>
On 2008-12-14, Łukasz Lew <lukasz.lew@gmail.com> wrote:
Show 8 quoted lines
> On Sun, Dec 14, 2008 at 15:55, Nick Andrew <nick@nick-andrew.net> 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 committedTo 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 aboveTo 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 rebaseHope this helps...